#include using namespace std; string cpy(string st,string **str,int i_start,int j_start) { string old; if(st == "UL") { old = str[i_start-2][j_start-1]; } if(st == "UR") { old = str[i_start-2][j_start+1]; } if(st == "R") { old = str[i_start][j_start+2]; } if(st == "LR") { old = str[i_start+2][j_start-1]; } if(st == "LL") { old = str[i_start+2][j_start+1]; } if(st == "L") { old = str[i_start][j_start-2]; } string ans; ans = st+ " " +old; return ans; } int fun(int **mat,int i_start,int j_start,int i_end,int j_end,string **str,int n) { if(i_start == i_end && j_start == j_end) { // path[k] = "k" return 0; } // cout << i_start << " " << j_start << endl; if(mat[i_start][j_start] != 0) { return mat[i_start][j_start]; } int a = 10000000; mat[i_start][j_start] = -1; string st; if(i_start-2 >= 0 && j_start-1 >= 0)//UL { if(mat[i_start-2][j_start-1] != -1) { a = fun(mat,i_start-2,j_start-1,i_end,j_end,str,n); st = "UL"; } } if(i_start-2 >= 0 && j_start+1 < n)//UR { if(mat[i_start-2][j_start+1] != -1) { int b = fun(mat,i_start-2,j_start+1,i_end,j_end,str,n); if(b < a) { a = b; st = "UR"; } } } if(j_start+2 < n)//R { if(mat[i_start][j_start+2] != -1) { int b = fun(mat,i_start,j_start+2,i_end,j_end,str,n); if(b < a) { a = b; st = "R"; } } } if(i_start+2 < n && j_start-1 >= 0)//LR { if(mat[i_start+2][j_start-1] != -1) { int b =fun(mat,i_start+2,j_start-1,i_end,j_end,str,n); if(b < a) { a = b; st = "LR"; } } } if(i_start+2 < n && j_start+1 < n)//LL { if(mat[i_start+2][j_start+1] != -1) { int b = fun(mat,i_start+2,j_start+1,i_end,j_end,str,n); if(b < a) { a = b; st = "LL"; } } } if(j_start-2 >= 0)//L { if(mat[i_start][j_start-2] != -1) { int b = fun(mat,i_start,j_start-2,i_end,j_end,str,n); if(b < a) { a = b; st = "L"; } } } mat[i_start][j_start] = 1+a; str[i_start][j_start] = cpy(st,str,i_start,j_start); // cout << i_start << " " << j_start <> n; int **a = new int*[n]; for(int i = 0;i> i_start >> j_start >> i_end >> j_end; string **str = new string*[n]; for(int i = 0;i= 10000000) { cout << "Impossible"; } else { cout << ans << endl; cout << str[i_start][j_start] <