#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long LL; typedef complex Complex; #define fi first #define se second inline int getInt() { int res(0); char c = getchar(); while(c < '0') c = getchar(); while(c >= '0') { res = res * 10 + (c - '0'); c = getchar(); } return res; } inline int fastpo(int x, int n, int mod) { int res(1); while(n) { if(n & 1) { res = res * (LL)x % mod; } x = x * (LL) x % mod; n /= 2; } return res; } const int N = 222; const int LOG = 20; const int mod = 1e9 + 7; const int inf = 1e9 + 7; int dis[N][N]; int dx[6] = {-2, -2, 0, 2,2, 0}; int dy[6] = {-1, 1, 2, 1,-1, -2}; string at[6] = {"UL", "UR", "R", "LR", "LL","L"} ; string a[N][N]; pair pre[N][N]; int main() { int n; cin >> n; int m = n; int sx, sy, tx, ty; scanf("%d%d%d%d", &sx, &sy, &tx, &ty); vector > q; q.push_back({tx, ty}); memset(dis, 0x7f, sizeof(dis)); dis[tx][ty] = 0; for(int op(0); op < (int)q.size(); op++) { int x(q[op].fi), y(q[op].se); for(int d(0); d < 6; d++) { int X(x + dx[d]), Y(y + dy[d]); if(0 <= X && X < n && 0 <= Y && Y < m && dis[X][Y] == 0x7f7f7f7f) { q.push_back({X, Y}); dis[X][Y] = dis[x][y] + 1; pre[X][Y] = {x, y}; a[X][Y] = at[d]; } } } if(dis[sx][sy] == 0x7f7f7f7f) { printf("Impossible\n"); }else { printf("%d\n", dis[sx][sy]); if(!dis[sx][sy]) printf("\n"); while(sx != tx || sy != ty) { for(int d(0); d < 6; d++) { int X(sx + dx[d]), Y(sy + dy[d]); if(0 <= X && X < n && 0 <= Y && Y < m && dis[X][Y] == dis[sx][sy] - 1) { sx = X; sy = Y; printf("%s%c", at[d].c_str(), dis[X][Y] == 0 ? '\n' : ' '); break; } } } } }