#include #define pb push_back using namespace std; void printShortestPath(int n, int is, int js, int ie, int je) { // Print the distance along with the sequence of moves. vectorv; int cn =0; if(abs(is-ie)%2!=0) cout<<"Impossible\n"; else if((abs(is-ie)%2==0 && abs(is-ie)%4!=0 && abs(js-je)%2!=0) || (abs(is-ie)%4==0 && abs(js-je)%2==0)) { if(isje { int m = min(js-je,(ie-is)/2); if(m == (js-je)) { is += m*2; int x = (ie-is)/2; js -= m; int lr = x/2; int ll = x/2; if(js==n-1) { v.pb("LL "); cn++; ll--; js--; } while(lr!=0) { v.pb("LR "); cn++; lr--; js++; if(js==n-1 && ll!=0) { v.pb("LL "); cn++; ll--; js--; } } while(ll!=0) { v.pb("LL "); cn++; ll--; js--; } for(int i=0; ije; i-=2) {v.pb("L "); cn++;}// cout<<"L "; } } } else // is>ie { if(js<=je) { int m = min(je-js,(is-ie)/2); // cout<<"UR "; if(m == (je-js)) { is -= m*2; int x = (is-ie)/2; int ur = x/2; int ul = x/2; if(js==0) { v.pb("UR "); cn++; ur--; js++; } while(ul!=0) { v.pb("UL "); cn++; ul--; js--; if(js==0 && ur!=0) { v.pb("UR "); cn++; ur--; js++; } } while(ur!=0) { v.pb("UR "); cn++; ur--; js++; } js += m; for(int i=0; iie js>je { int m = min(js-je,(is-ie)/2); for(int i=0; ije; i-=2) { cn++; v.pb("L ");}//cout<<"L "; } } } 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; }