#include using namespace std; string path = ""; vector v; int c = 0; int n; bool pos = true; void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { if (i_start < 0 || j_start < 0 || i_start >=n || j_start >=n || (i_start - i_end) % 2 == 1) { pos = false; path = "Impossible"; return; } if(v[n*i_start+j_start]) return; v[n*i_start+j_start] = true; if(i_start == i_end && j_start == j_end){ return; } else if(i_start > i_end && j_start >= j_end) { path += "UL ";c++; // if(!v[n*(i_start-2)+j_start-1]) printShortestPath(n,i_start-2,j_start-1,i_end,j_end); } else if(i_start > i_end && j_start < j_end) { path += "UR ";c++; // if(!v[n*(i_start-2)+j_start+1]) printShortestPath(n,i_start-2,j_start+1,i_end,j_end); } else if(i_start == i_end && j_start < j_end) { path += "R ";c++; // if(!v[n*(i_start)+j_start+2]) printShortestPath(n,i_start,j_start+2,i_end,j_end); } else if(i_start < i_end && j_start <= j_end) { path += "LR ";c++; // if(!v[n*(i_start+2)+j_start+1]) printShortestPath(n,i_start+2,j_start+1,i_end,j_end); } else if(i_start < i_end && j_start > j_end) { path += "LL ";c++; // if(!v[n*(i_start+2)+j_start-1]) printShortestPath(n,i_start+2,j_start-1,i_end,j_end); } else if(i_start == i_end && j_start > j_end) { path += "L ";c++; // if(!v[n*(i_start)+j_start-2]) printShortestPath(n,i_start,j_start-2,i_end,j_end); } } int main() { cin >> n; v.clear(); v.resize(n * n + 5, false); 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); if(pos) cout << c << endl << path; else cout << path; return 0; }