#include using namespace std; int r1, c1, r2, c2, n; int grid[200][200]; int rc[] = {-2, -2, 0, 2, 2, 0}; int cc[] = {-1, 1, 2, 1, -1, -2}; bool vis[200][200]; vector ans; void bfs() { for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) grid[i][j] = INT_MAX; queue q; q.push(r1), q.push(c1); grid[r1][c1] = 0; while (!q.empty()) { int r = q.front(); q.pop(); int c = q.front(); q.pop(); for (int i = 0; i < 6; i++) { int r3 = r + rc[i]; int c3 = c + cc[i]; if (0 <= r3 && r3 < n && 0 <= c3 && c3 < n && grid[r3][c3] == INT_MAX) { grid[r3][c3] = grid[r][c] + 1; q.push(r3), q.push(c3); } } } } void dfs(int r, int c) { vis[r][c] = true; if (r == r2 && c == c2) { printf("%d\n", ans.size()); for (int i = 0; i < ans.size(); i++) { if (ans[i] == 0) printf("UL"); if (ans[i] == 1) printf("UR"); if (ans[i] == 2) printf("R"); if (ans[i] == 3) printf("LR"); if (ans[i] == 4) printf("LL"); if (ans[i] == 5) printf("L"); printf(i == ans.size() - 1 ? "\n" : " "); } } for (int i = 0; i < 6; i++) { int r3 = r + rc[i]; int c3 = c + cc[i]; if (0 <= r3 && r3 < n && 0 <= c3 && c3 < n && !vis[r3][c3] && grid[r3][c3] == (grid[r][c] + 1)) { ans.push_back(i); dfs(r3, c3); ans.pop_back(); } } } int main() { scanf("%d", &n); scanf("%d %d %d %d", &r1, &c1, &r2, &c2); bfs(); if (grid[r2][c2] == INT_MAX) { puts("Impossible"); return 0; } dfs(r1, c1); }