#include #include using namespace std; void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { vector s; int ct=0; int p=-1; if(j_start==j_end)//y axis { if(abs(i_start-i_end)%4!=0) cout<<"Impossible"; else { p=1; int m=abs(i_end-i_start)/4; for(int i=1;i<=m;i++) { ct++; s.push_back("LR"); } for(int i=1;i<=m;i++) { ct++; s.push_back("LL"); } } } else if(j_starti_end)//1st quadrant { if((i_start-i_end)%2!=0||(i_start-i_end%2==0&&(j_end-j_start-((i_start-i_end)/2))%2!=0)) cout<<"Impossible"; else { p=1; for(int i=1;i<(i_start-i_end)/2;i++) { ct++; s.push_back("UR"); } for(int d=j_start+((i_start-i_end)/2);d<=j_end;d+=2) { ct++; s.push_back("R"); } } } else//2nd quadrant { if((i_end-i_start)%2!=0||(i_end-i_start%2==0&&(j_end-j_start-((i_end-i_start)/2))%2!=0)) cout<<"Impossible"; else { p=1; for(int d=j_start+((i_end-i_start)/2);d<=j_end;d+=2) { ct++; s.push_back("R"); } for(int i=1;i<(i_end-i_start)/2;i++) { ct++; s.push_back("LR"); } } } } else //3rd and 4th quadrant { if(i_end==i_start)//x axis { if(j_start-j_end%2!=0) cout<<"Impossible"; else { p=1; for(int i=j_start;i<=j_end;i-=2) { ct++; s.push_back("L"); } } } else if(i_start>i_end)//4th quadrant { if((i_start-i_end)%2!=0||(i_start-i_end%2==0&&(j_start-j_end-((i_start-i_end)/2))%2!=0)) cout<<"Impossible"; else { p=1; for(int i=1;i<=(i_start-i_end)/2;i++) { ct++; s.push_back("UL"); } for(int d=j_start-((i_start-i_end)/2);d>j_end;d-=2) { ct++; s.push_back("L"); } } } else//3rd quadrant { if((i_end-i_start)%2!=0||(i_end-i_start%2==0&&(j_start-j_end-((i_end-i_start)/2))%2!=0)) cout<<"Impossible"; else { p=1; for(int i=1;i<=(i_end-i_start)/2;i++) { ct++; s.push_back("LL"); } for(int d=j_start-((i_end-i_start)/2);d>j_end;d-=2) { ct++; s.push_back("L"); } } } } if(p!=-1) { cout<> n; int i_start; int j_start; int i_end; int j_end; cin >> i_start >> j_start >> i_end >> j_end; printShortestPath(n, i_start, j_start, i_end, j_end); return 0; }