#include using namespace std; int n; int trace[205][205]; bool psd[205][205]; int i_start, j_start, i_end, j_end; void bfs(int x, int y) { for (int i=0; i > Q; Q.push({x, y}); psd[x][y]=1; int tx, ty; while (!Q.empty()) { tx=Q.front().first, ty=Q.front().second; Q.pop(); if (tx==i_end && ty==j_end) break; if (tx-2>=0 && ty-1>=0 && !psd[tx-2][ty-1]) { Q.push({tx-2, ty-1}); psd[tx-2][ty-1]=1; trace[tx-2][ty-1]=1; } if (tx-2>=0 && ty+1=0 && !psd[tx+2][ty-1]) { Q.push({tx+2, ty-1}); psd[tx+2][ty-1]=1; trace[tx+2][ty-1]=5; } if (ty-2>=0 && !psd[tx][ty-2]) { Q.push({tx, ty-2}); psd[tx][ty-2]=1; trace[tx][ty-2]=6; } } } void printShortestPath() { bfs(i_start, j_start); vector ans; ans.clear(); while (i_end != i_start || j_end != j_start) { if (trace[i_end][j_end]==0) { cout<<"Impossible\n"; return; } else if (trace[i_end][j_end]==1) { ans.push_back("UL"); j_end+=1; i_end+=2; } else if (trace[i_end][j_end]==2) { ans.push_back("UR"); j_end-=1; i_end+=2; } else if (trace[i_end][j_end]==3) { ans.push_back("R"); j_end-=2; } else if (trace[i_end][j_end]==4) { ans.push_back("LR"); j_end-=1; i_end-=2; } else if (trace[i_end][j_end]==5) { ans.push_back("LL"); j_end+=1; i_end-=2; } else if (trace[i_end][j_end]==6) { ans.push_back("L"); j_end+=2; } } cout<=0; i--) cout<> n; cin >> i_start >> j_start >> i_end >> j_end; printShortestPath(); return 0; }