#include"bits/stdc++.h" using namespace std ; // 1 -> UL,2-> UR,3-> R,4-> LR,5-> LL,6-> L int dis[205][205][8]; queue < pair > Q; int X1,Y1,X2,Y2; int N; bool valid(int x,int y,int type) { if(x>=0 && x=0 && y v[10]; int main() { int i,j,k; cin>>N; for(i=0;i<201;i++) for(j=0;j<201;j++) for(k=0;k<8;k++) dis[i][j][k]=-1; cin>>X1>>Y1>>X2>>Y2; for(i=1;i<=6;i++) dis[X1][Y1][i]=0; Q.push({X1,Y1}); while(!Q.empty()) { pair p=Q.front(); Q.pop(); int x=p.first; int y=p.second; int mini=1e6; for(i=1;i<=6;i++) { if(dis[x][y][i]!=-1) mini=min(dis[x][y][i],mini); } if(valid(x-2,y-1,1)) { dis[x-2][y-1][1]=mini+1; Q.push({x-2,y-1}); } if(valid(x-2,y+1,2)) { dis[x-2][y+1][2]=mini+1; Q.push({x-2,y+1}); } if(valid(x,y+2,3)) { dis[x][y+2][3]=mini+1; Q.push({x,y+2}); } if(valid(x+2,y+1,4)) { dis[x+2][y+1][4]=mini+1; Q.push({x+2,y+1}); } if(valid(x+2,y-1,5)) { dis[x+2][y-1][5]=mini+1; Q.push({x+2,y-1}); } if(valid(x,y-2,6)) { dis[x][y-2][6]=mini+1; Q.push({x,y-2}); } } int mini=1e6; for(i=1;i<=6;i++) { if(dis[X2][Y2][i]!=-1) mini=min(mini,dis[X2][Y2][i]); } if(mini==1e6) { printf("Impossible"); return 0; } for(i=1;i<=6;i++) { if(mini==dis[X2][Y2][i]) { int x=X2; int y=Y2; j=i; int tot=mini; while(1) { if(x==X1 && y==Y1) break; v[i].push_back(j); if(j==1) { x+=2; y+=1; tot--; for(k=1;k<=6;k++) { if(dis[x][y][k]==tot) j=k; } } else if(j==2) { x+=2; y-=1; tot--; for(k=1;k<=6;k++) { if(dis[x][y][k]==tot) j=k; } } else if(j==3) { y-=2; tot--; for(k=1;k<=6;k++) { if(dis[x][y][k]==tot) j=k; } } else if(j==4) { x-=2; y-=1; tot--; for(k=1;k<=6;k++) { if(dis[x][y][k]==tot) j=k; } } else if(j==5) { x-=2; y+=1; tot--; for(k=1;k<=6;k++) { if(dis[x][y][k]==tot) j=k; } } else if(j==6) { x+=0; y+=2; tot--; for(k=1;k<=6;k++) { if(dis[x][y][k]==tot) j=k; } } } } } cout<0) reverse(v[i].begin(),v[i].end()); } vector X; for(i=1;i<=6;i++) { string str; if(v[i].size()>0) { for(j=0;j