#include #define me(a,x) memset(a,x,sizeof a) using namespace std; const int dx[6]={-2,-2,0,2,2,0}; const int dy[6]={-1,1,2,1,-1,-2}; const int N=202,inf=1e9+7; char O[1<<14],*S=O,*T=O; #define gc (S==T&&(T=(S=O)+fread(O,1,1<<14,stdin),S==T)?-1:*S++) inline int read(){ int x=0,f=1; char ch=gc; while(ch<'0' || ch>'9'){if(ch=='-')f=-1; ch=gc;} while(ch>='0' && ch<='9'){x=(x<<1)+(x<<3)+(ch^48); ch=gc;} return x*f; } struct P{int x,y;}; int f[N][N],p[N][N],ba[6],st[40010]; char op[6][3]={{"UL"},{"UR"},{"R"},{"LR"},{"LL"},{"L"}}; queue

q; int main(){ ba[0]=3,ba[3]=0,ba[1]=4,ba[4]=1,ba[2]=5,ba[5]=2; int n=read(),x=read(),y=read(); me(f,-1); q.push((P){x,y}),f[x][y]=0,p[x][y]=-1; while(!q.empty()){ P u=q.front(); q.pop(); for(int k=0;k<6;++k){ x=u.x+dx[k],y=u.y+dy[k]; if(x<0||x>=n||y<0||y>=n||f[x][y]!=-1)continue; f[x][y]=f[u.x][u.y]+1,p[x][y]=ba[k]; q.push((P){x,y}); } } x=read(),y=read(); int g=f[x][y]; if(g<0)return puts("Impossible"),0; printf("%d\n",g); for(int i=1;i<=g;++i){ st[i]=ba[p[x][y]]; int u=p[x][y]; x+=dx[u],y+=dy[u]; } for(int i=g;i>1;--i)printf("%s ",op[st[i]]); printf("%s\n",op[st[1]]); return 0; }