#include using namespace std; #define ii pair #define pb push_back void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { queue q; int vis[201][201],used[201][201],dr[]={-2,-2,0,2,2,0},dc[]={-1,1,2,1,-1,-2}; string xx[]={"UL","UR","R","LR","LL","L"}; memset(vis,-1,sizeof(vis)); ii pr[201][201]; q.push(ii(i_start,j_start)); vis[i_start][j_start]=0; while(!q.empty()){ int r=q.front().first, c=q.front().second; q.pop(); for(int i=0; i<6; ++i){ int nr=r+dr[i]; int nc=c+dc[i]; if(nr<0 || nr>=n || nc<0 || nc>=n || vis[nr][nc]!=-1)continue; vis[nr][nc]=vis[r][c]+1; used[nr][nc]=i; pr[nr][nc]=ii(r,c); q.push(ii(nr,nc)); } } if(vis[i_end][j_end]==-1){ puts("Impossible"); return; } printf("%d\n", vis[i_end][j_end]); int r=i_end,c=j_end; vector ans; while(r!=i_start || c!=j_start){ ans.pb(xx[used[r][c]]); ii prt=pr[r][c]; r=prt.first; c=prt.second; } for(int i=ans.size()-1; i>=0; --i) 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; }