#include using namespace std; bool A[205][205]; vector V,finalV; int printed ; int moves,finalM; void Show() { printf("%d\n",finalM); for(int i = 0 ;i= 0 && j_start-1 >= 0 && A[i_start-2][j_start-1] == false) { moves++; A[i_start-2][j_start-1] = true; V.push_back("UL"); printShortestPath(n,i_start-2,j_start-1,i_end,j_end); V.pop_back(); A[i_start-2][j_start-1] = false; moves--; } if(i_start-2 >= 0 && j_start+1 < n && A[i_start-2][j_start+1] == false) { moves++; A[i_start-2][j_start+1] = true; V.push_back("UR"); printShortestPath(n,i_start-2,j_start+1,i_end,j_end); V.pop_back(); A[i_start-2][j_start+1] = false; moves--; } if(j_start+2 < n && A[i_start][j_start+2] == false) { moves++; A[i_start][j_start+2] = true; V.push_back("R"); printShortestPath(n,i_start,j_start+2,i_end,j_end); V.pop_back(); A[i_start][j_start+2] = false; moves--; } if(i_start+2 < n && j_start+1 < n && A[i_start+2][j_start+1] == false) { moves++; A[i_start+2][j_start+1] = true; V.push_back("LR"); printShortestPath(n,i_start+2,j_start+1,i_end,j_end); V.pop_back(); A[i_start+2][j_start+1] = false; moves--; } if(i_start+2 < n && j_start-1 >= 0 && A[i_start+2][j_start-1] == false) { moves++; A[i_start+2][j_start-1] = true; V.push_back("LL"); printShortestPath(n,i_start+2,j_start-1,i_end,j_end); V.pop_back(); A[i_start+2][j_start-1] = false; moves--; } if(j_start-2 >= 0 && A[i_start][j_start-2] == false) { moves++; A[i_start][j_start-2] = true; V.push_back("L"); printShortestPath(n,i_start,j_start-2,i_end,j_end); V.pop_back(); A[i_start][j_start-2] = false; moves--; } } int main() { int n; cin >> n; for(int i = 0; i> i_start >> j_start >> i_end >> j_end; printed = 0; moves = 0; printShortestPath(n, i_start, j_start, i_end, j_end); if(printed == 0) { printf("Impossible\n"); } else Show(); V.clear(); return 0; }