#include #include #include #include #include #include using namespace std; int n,cnt=0,sx,sy,tx,ty,h[6][2]={{-2,-1},{-2,1},{0,2},{2,1},{2,-1},{0,-2}},dis[222][222],pre[222][222],dir[222][222],res[44444]; queueq; inline bool _(int x,int y){ return 0<=x&&x>10,y=k&1023; q.pop(); for (int i=0;i!=6;i++){ int nx=x+h[i][0],ny=y+h[i][1]; if (_(nx,ny)&&(!~dis[nx][ny])){ dis[nx][ny]=dis[x][y]+1; pre[nx][ny]=k; dir[nx][ny]=i; q.push((nx<<10)^ny); } } } if (~dis[tx][ty]){ printf("%d\n",dis[tx][ty]); int x=tx,y=ty; while (x!=sx||y!=sy){ res[++cnt]=dir[x][y]; int k=pre[x][y]; x=k>>10; y=k&1023; } for (int i=cnt;i;i--){ switch (res[i]){ case 0:{ printf("UL "); break; } case 1:{ printf("UR "); break; } case 2:{ printf("R "); break; } case 3:{ printf("LR "); break; } case 4:{ printf("LL "); break; } case 5:{ printf("L "); break; } } } } else{ printf("Impossible"); } return 0; }