#include using namespace std; #define inf 1000000000 int path[300][300]; int n; bool first=true; void jalan(int x,int y,int count); void findtrack(int x,int y,int count); bool cek(int x,int y); int main(){ scanf("%d",&n); for (int i=0;i<=n+1;i++){ for (int j=0;j<=n+1;j++){ path[i][j]=inf; } } int startx,starty,targetx,targety; scanf("%d %d %d %d",&startx,&starty,&targetx,&targety); jalan(startx,starty,0); if (path[targetx][targety]==inf){ printf("Impossible\n"); }else{ printf("%d\n",path[targetx][targety]); findtrack(targetx,targety,path[targetx][targety]); printf("\n"); } return 0; } bool cek(int x,int y){ if ((x>=0 && x=0 && ycount) jalan(x-2,y-1,count+1); //UL if (cek(x-2,y+1) && path[x-2][y+1]>count) jalan(x-2,y+1,count+1); //UR if (cek(x,y+2) && path[x][y+2]>count) jalan(x,y+2,count+1); //R if (cek(x+2,y+1) && path[x+2][y+1]>count) jalan(x+2,y+1,count+1); //LR if (cek(x+2,y-1) && path[x+2][y-1]>count) jalan(x+2,y-1,count+1); //LL if (cek(x,y-2) && path[x][y-2]>count) jalan(x,y-2,count+1); //LL } void findtrack(int x,int y,int count){ if (count!=0){ if (!first){ printf(" "); }else{ first=false; } if (cek(x-2,y-1) && path[x-2][y-1]==count-1) { printf("LR"); findtrack(x-2,y-1,count-1); }else if (cek(x-2,y+1) && path[x-2][y+1]==count-1){ printf("LL"); findtrack(x-2,y+1,count-1); }else if (cek(x+2,y-1) && path[x+2][y-1]==count-1){ printf("UR"); findtrack(x+2,y-1,count-1); }else if(cek(x+2,y+1) && path[x+2][y+1]==count-1){ printf("UL"); findtrack(x+2,y+1,count-1); }else if (cek(x,y-2) && path[x][y-2]==count-1){ printf("R"); findtrack(x,y-2,count-1); } else if (cek(x,y+2) && path[x][y+2]==count-1){ printf("L"); findtrack(x,y+2,count-1); } } }