#include #define FAST_IO ios_base::sync_with_stdio(false);cin.tie(0) using namespace std; void val(int x) { switch(x) { case 1: cout<<"UL "; break; case 2: cout<<"UR "; break; case 3: cout<<"R "; break; case 4: cout<<"LR "; break; case 5: cout<<"LL "; break; case 6: cout<<"L "; break; } } bool flag = false; bool possible = true; int direction(int n,int &i1, int &j1, int i2, int j2,vector &path) { int u = i2-i1 ,r = j2-j1; if(!r) { if(u>0 && u%4==0) { int rpos = (n-1-j1)/2; if(u/4 <= rpos) { for(int z = 0;z< u/4;z++) { i1+=2; path.push_back(4); } for(int z = 1;z< u/4;z++) { i1+=2; path.push_back(5); } j1+=1; return 5; } else if(rpos>1) { for(int z = 0;z< rpos;z++) { i1+=2; path.push_back(4); } for(int z = 0;z< rpos;z++) { i1+=2; path.push_back(5); } return 4; } } else if((u<0) && (-1*u)%4==0) { int lpos = j1/2; if((-1*u)/4 <= lpos) { for(int z = 0;z< (-1*u)/4;z++) { i1-=2; path.push_back(1); } for(int z = 1;z< (-1*u)/4;z++) { i1-=2; path.push_back(2); } j1-=1; return 2; } else if(lpos>1) { for(int z = 0;z< lpos;z++) { i1-=2; path.push_back(1); } for(int z = 1;z0) return 1; else if(u<0 && r>=0 && j10 && r%2 == 0 && j10 && r>=0 && j11) return 6; else if(u>0 && r<=0 && j1>0) return 5; else return -1; } void printShortestPath(int n,int i1, int j1, int i2, int j2,vector &path) { // Print the distance along with the sequence of moves. if(i1 >= n || j1 >= n || i1<0 || j1<0) possible = false; if(i1 == i2 && j1 == j2) { flag = true; cout<0) { path.push_back(p); switch(p) { case 1: printShortestPath(n,i1-2,j1-1,i2,j2,path); break; case 2: printShortestPath(n,i1-2,j1+1,i2,j2,path); break; case 3: printShortestPath(n,i1,j1+2,i2,j2,path); break; case 4: printShortestPath(n,i1+2,j1+1,i2,j2,path); break; case 5: printShortestPath(n,i1+2,j1-1,i2,j2,path); break; case 6: printShortestPath(n,i1,j1-2,i2,j2,path); break; } } else possible = false; } } int main() { FAST_IO; int n; cin >> n; int i1; int j1; int i2; int j2; cin >> i1 >> j1 >> i2 >> j2; vector path; if(i1 & 1) { if(i2 & 1) { printShortestPath(n,i1, j1, i2, j2,path); if(!flag || !possible) cout<<"Impossible"; } else cout<<"Impossible"; } else { if(i2 % 2 == 0) { printShortestPath(n,i1, j1, i2, j2,path); if(!flag || !possible) cout<<"Impossible"; } else cout<<"Impossible"; } return 0; }