#include inline int read(){ char c=getchar();while (c!='-'&&(c<'0'||c>'9'))c=getchar(); int k=0,kk=1;if (c=='-')c=getchar(),kk=-1; while (c>='0'&&c<='9')k=k*10+c-'0',c=getchar();return kk*k; }using namespace std; void write(int x){if (x)write(x/10),putchar(x%10+'0');} void writeln(int x){write(x);if (x==0)putchar('0');puts("");} int c[6][2]={{-2,-1},{-2,1},{0,2},{2,1},{2,-1},{0,-2}}; int n,x,y,xx,yy,last[1000][1000],f[1000][1000],xxx,yyy,l,r; struct lsg{int x,y;}d[1000000]; void dfs(int xx,int yy){ if (xx==x&&yy==y)return; dfs(xx-c[last[xx][yy]][0],yy-c[last[xx][yy]][1]); if (last[xx][yy]==0)cout<<"UL"; if (last[xx][yy]==1)cout<<"UR"; if (last[xx][yy]==2)cout<<"R"; if (last[xx][yy]==3)cout<<"LR"; if (last[xx][yy]==4)cout<<"LL"; if (last[xx][yy]==5)cout<<"L"; if (xx!=xxx||yy!=yyy)putchar(' ');else putchar('\n'); } signed main(){ n=read();x=read()+1;y=read()+1;xx=read()+1;yy=read()+1; f[x][y]=r=1;d[1].x=x;d[1].y=y; while (l=1&&xxx<=n&&yyy>=1&&yyy<=n&&!f[xxx][yyy]){ d[++r].x=xxx;d[r].y=yyy;f[xxx][yyy]=f[d[l].x][d[l].y]+1;last[xxx][yyy]=i; if (xxx==xx&&yyy==yy){writeln(f[xx][yy]-1);dfs(xx,yy);return 0;} } } }puts("Impossible"); }