#include #include #include #include using namespace std; int vis[200][200]; int dis[200][200]; int sol[200][200]; int n; void shortest_path(int xstart,int ystart,int xend,int yend) { queue< pair > q; dis[xstart][ystart]=0; q.push(make_pair(xstart,ystart)); int i,j; while(!q.empty()) { i=q.front().first; j=q.front().second; q.pop(); if(i==xend && j==yend) break; if(i-2>=0 && j-1>=0 && vis[i-2][j-1]==0) { vis[i-2][j-1]=1; dis[i-2][j-1]=1+dis[i][j]; sol[i-2][j-1]=1; q.push(make_pair(i-2,j-1)); } if(i-2>=0 && j+1=0 && vis[i+2][j-1]==0) { vis[i+2][j-1]=1; dis[i+2][j-1]=1+dis[i][j]; sol[i+2][j-1]=5; q.push(make_pair(i+2,j-1)); } if(j-2>=0 && vis[i][j-2]==0) { vis[i][j-2]=1; dis[i][j-2]=1+dis[i][j]; sol[i][j-2]=6; q.push(make_pair(i,j-2)); } } } void print_path(int xstart,int ystart,int xend,int yend) { if(xstart==xend && ystart==yend) return; if(sol[xend][yend]==1) { print_path(xstart,ystart,xend+2,yend+1); cout<<"UL "; } else if(sol[xend][yend]==2) { print_path(xstart,ystart,xend+2,yend-1); cout<<"UR "; } else if(sol[xend][yend]==3) { print_path(xstart,ystart,xend,yend-2); cout<<"R "; } else if(sol[xend][yend]==4) { print_path(xstart,ystart,xend-2,yend-1); cout<<"LR "; } else if(sol[xend][yend]==5) { print_path(xstart,ystart,xend-2,yend+1); cout<<"LL "; } else { print_path(xstart,ystart,xend,yend+2); cout<<"L "; } } int main() { cin>>n; memset(vis,0,sizeof(vis[0][0])*200*200); memset(dis,-1,sizeof(dis[0][0])*200*200); memset(sol,0,sizeof(sol[0][0])*200*200); int xstart,ystart,xend,yend; cin>>xstart>>ystart>>xend>>yend; shortest_path(xstart,ystart,xend,yend); if(dis[xend][yend]==-1) cout<<"Impossible"; else { cout<