#include #include using namespace std; #define mp make_pair #define fi first #define se second queue >que; stack >stk; paira[1007][1007]; int b[1000007]; int vis[1007][1007]; int main() { int m; scanf("%d",&m); int i; for(i=0;i<4;i++) scanf("%d",b+i); que.push(mp(b[0],b[1])); vis[b[0]][b[1]]=1; while(!que.empty()) { int lm=que.size(); for(i=0;item=que.front(); que.pop(); if(tem.fi-2>=0&&tem.se-1>=0&&!vis[tem.fi-2][tem.se-1]) que.push(mp(tem.fi-2,tem.se-1)),vis[tem.fi-2][tem.se-1]=1,a[tem.fi-2][tem.se-1]=tem; if(tem.fi-2>=0&&tem.se+1=0&&!vis[tem.fi+2][tem.se-1]) que.push(mp(tem.fi+2,tem.se-1)),vis[tem.fi+2][tem.se-1]=1,a[tem.fi+2][tem.se-1]=tem; if(tem.se-2>=0&&!vis[tem.fi][tem.se-2]) que.push(mp(tem.fi,tem.se-2)),vis[tem.fi][tem.se-2]=1,a[tem.fi][tem.se-2]=tem; } } if(vis[b[2]][b[3]]) { int aa=b[2],bb=b[3]; while(!(aa==b[0]&&bb==b[1])) { stk.push(mp(aa,bb)); pairtem=a[aa][bb]; aa=tem.fi,bb=tem.se; } printf("%d\n",(int)stk.size()); stk.push(mp(b[0],b[1])); while(!stk.empty()) { pairtem=stk.top(); stk.pop(); if(!stk.empty()) { if(mp(stk.top().fi-tem.fi,stk.top().se-tem.se)==mp(-2,-1)) printf("UL "); else if(mp(stk.top().fi-tem.fi,stk.top().se-tem.se)==mp(-2,1)) printf("UR "); else if(mp(stk.top().fi-tem.fi,stk.top().se-tem.se)==mp(0,2)) printf("R "); else if(mp(stk.top().fi-tem.fi,stk.top().se-tem.se)==mp(2,1)) printf("LR "); else if(mp(stk.top().fi-tem.fi,stk.top().se-tem.se)==mp(2,-1)) printf("LL "); else printf("L "); } } } else printf("Impossible\n"); return 0; }