#include using namespace std; int n; int mat[210][210]; int np[210][210]; int dist[201][201]; int vis[201][201]; #define INF 99999999 mapdir; int sx,sy,dx,dy; void findis(int x,int y) { if(x<0||y<0||x>=n||y>=n) return; int canreach=0; int nx,ny; vis[x][y]=1; // for UL if(x-2>=0&&y-1>=0&&!vis[x-2][y-1]) { if(dist[x-2][y-1]==0) { dist[x][y]=1; np[x][y]=1; canreach=1; } if(dist[x-2][y-1]!=INF&&dist[x-2][y-1]!=-2) dist[x][y]=dist[x-2][y-1]+1,np[x][y]=1,canreach=1; if(dist[x-2][y-1]==INF) { findis(x-2,y-1); if(dist[x-2][y-1]!=-2) { dist[x][y]=dist[x-2][y-1]+1,np[x][y]=1,canreach=1; } } } // for UR nx=x-2; ny=y+1; if(x-2>=0&&y+1dist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=2,canreach=1; } if(dist[nx][ny]==INF) { findis(nx,ny); if(dist[nx][ny]!=-2&&dist[x][y]>dist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=2,canreach=1; } } //for R nx =x; ny=y+2; if(nydist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=3,canreach=1; } if(dist[nx][ny]==INF) { findis(nx,ny); if(dist[nx][ny]!=-2&&dist[x][y]>dist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=3,canreach=1; } } // for LR nx =x+2; ny=y+1; if(nydist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=4,canreach=1; } if(dist[nx][ny]==INF) { findis(nx,ny); if(dist[nx][ny]!=-2&&dist[x][y]>dist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=4,canreach=1; } } // For LL nx =x+2; ny=y-1; if(ny>=0&&nxdist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=5,canreach=1; } if(dist[nx][ny]==INF) { findis(nx,ny); if(dist[nx][ny]!=-2&&dist[x][y]>dist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=5,canreach=1; } } // for L nx=x; ny=y-2; if(ny>=0&&!vis[nx][ny]) { if(dist[nx][ny]==0&&canreach==0) { dist[x][y]=1; np[x][y]=6; canreach=1; } if(dist[nx][ny]!=INF&&dist[nx][ny]!=-2) { if(canreach==0) dist[x][y]=dist[nx][ny]+1,np[x][y]=6,canreach=1; else if(dist[x][y]>dist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=6,canreach=1; } if(dist[nx][ny]==INF) { findis(nx,ny); if(dist[nx][ny]!=-2&&dist[x][y]>dist[nx][ny]+1) dist[x][y]=dist[nx][ny]+1,np[x][y]=6,canreach=1; } } if(canreach==0) dist[x][y]=-2; vis[x][y]=0; } int main() { dir[1]="UL"; dir[2]="UR"; dir[3]="R"; dir[4]="LR"; dir[5]="LL"; dir[6]="L"; cin>>n; cin>>sx>>sy>>dx>>dy; for(int i=0;i<=200;i++) for(int j=0;j<=200;j++) mat[i][j]=0,np[i][j]=0,dist[i][j]=INF,vis[i][j]=0; dist[dx][dy]=0; np[dx][dy]=-1; int ans=0; findis(sx,sy); if(dist[sx][sy]==-2) cout<<"Impossible"; else { cout<