#include using namespace std; typedef pair pii; #define fst first #define snd second int bfs[201][201],mov[6][2]={{-2,-1},{-2,1},{0,2},{2,1},{2,-1},{0,-2}}; string movi[6]={"UL", "UR", "R", "LR", "LL", "L"}; bool validway[201][201]; void printShortestPath(int n, int x, int y, int xi, int yi) { queue busq; memset(bfs,-1,sizeof(bfs)); int i,j,p,q,inx=x,iny=y; bfs[x][y]=0; busq.push({x,y}); while(!busq.empty()){ tie(x,y)=busq.front(); busq.pop(); for(i=0;i<6;i++){ p=x+mov[i][0],q=y+mov[i][1]; if(p>=n||q>=n||p<0||q<0||bfs[p][q]>=0)continue; bfs[p][q]=bfs[x][y]+1; busq.push({p,q}); } } if(bfs[xi][yi]==-1){ cout<<"Impossible\n"; return; } validway[xi][yi]=1; busq.push({xi,yi}); while(!busq.empty()){ tie(x,y)=busq.front(); busq.pop(); for(i=0;i<6;i++){ p=x+mov[i][0],q=y+mov[i][1]; if(p>=n||q>=n||p<0||q<0||validway[p][q])continue; if(bfs[p][q]+1==bfs[x][y]){ validway[p][q]=1; busq.push({p,q}); } } } cout<=n||q>=n||p<0||q<0)continue; if(validway[p][q]&&bfs[p][q]==bfs[x][y]+1)break; } 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; }