#include #define mp make_pair #define pb push_back #define ff first #define ss second using namespace std; int u[202][202]; pair zam[202][202]; int a[202][202]; queue< pair > q; void printShortestPath(int n, int ii, int jj, int x, int y) { int i,j; a[ii][jj] = 0; u[ii][jj] = 1; zam[ii][jj] = mp(-1,-1); q.push(mp(ii, jj)); while(!q.empty()){ int i = q.front().ff, j = q.front().ss; if(i > 1){ if(j > 0 && !u[i - 2][j - 1]){ u[i - 2][j - 1] = 1; a[i-2][j-1]= a[i][j] + 1; q.push(mp(i-2, j-1)); zam[i-2][j-1] = mp(i, j); } if(j < n - 1 && !u[i - 2][j + 1]){ u[i - 2][j + 1] = 1; a[i-2][j+1]= a[i][j] + 1; q.push(mp(i-2, j+1)); zam[i-2][j+1] = mp(i, j); } } if(j < n - 2 && !u[i][j +2]){ u[i][j+2] = 1; a[i][j+2]= a[i][j] + 1; q.push(mp(i, j+2)); zam[i][j+2] = mp(i, j); } if(i < n - 2){ if(j < n - 1 && !u[i + 2][j + 1]){ u[i + 2][j + 1] = 1; a[i+2][j+1]= a[i][j] + 1; q.push(mp(i+2, j+1)); zam[i+2][j+1] = mp(i, j); } if(j > 0 && !u[i + 2][j - 1]){ u[i + 2][j - 1] = 1; a[i+2][j-1]= a[i][j] + 1; q.push(mp(i+2, j-1)); zam[i+2][j-1] = mp(i, j); } } if(j > 1 && !u[i][j -2]){ u[i][j-2] = 1; a[i][j-2]= a[i][j] + 1; q.push(mp(i, j-2)); zam[i][j-2] = mp(i, j); } q.pop(); } if(u[x][y]){ cout << a[x][y] << endl; vector< string > v; while(zam[x][y] != mp(-1,-1)){ int xx = zam[x][y].ff, yy = zam[x][y].ss; if(xx - 2 == x){ if(yy - 1 == y) v.pb("UL"); else v.pb("UR"); } else{ if(xx + 2 == x){ if(yy - 1 ==y) v.pb("LL"); else v.pb("LR"); } else{ if(yy - 2 ==y) v.pb("L"); else v.pb("R"); } } x = xx, y = yy; } for(i = v.size() -1; i >= 0; i--){ cout << v[i] << " "; } cout << endl; } else{ cout << "Impossible" << endl; } } int main() { int n; cin >> 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; }