#include using namespace std; int n, ans, x, y, a, b; int dp[201][201]; map, string> m; vector path; void solve(int u, int v) { queue > q; q.push(make_pair(u, v)); dp[u][v] = 0; while(!q.empty()) { pair p = q.front(); q.pop(); u = p.first; v = p.second; if(u - 2 >= 0 && v - 1 >= 0 && u - 2 < n && v - 1 < n && dp[u - 2][v - 1] == INT_MAX) { q.push(make_pair(u - 2, v - 1)); dp[u - 2][v - 1] = dp[u][v] + 1; m[make_pair(u - 2, v - 1)] = "UL"; } if(u - 2 >= 0 && v + 1 >= 0 && u - 2 < n && v + 1 < n && dp[u - 2][v + 1] == INT_MAX) { q.push(make_pair(u - 2, v + 1)); dp[u - 2][v + 1] = dp[u][v] + 1; m[make_pair(u - 2, v + 1)] = "UR"; } if(u >= 0 && v + 2 >= 0 && u < n && v + 2 < n && dp[u][v + 2] == INT_MAX) { q.push(make_pair(u, v + 2)); dp[u][v + 2] = dp[u][v] + 1; m[make_pair(u, v + 2)] = "R"; } if(u + 2 >= 0 && v + 1 >= 0 && u + 2 < n && v + 1 < n && dp[u + 2][v + 1] == INT_MAX) { q.push(make_pair(u + 2, v + 1)); dp[u + 2][v + 1] = dp[u][v] + 1; m[make_pair(u + 2, v + 1)] = "LR"; } if(u + 2 >= 0 && v - 1 >= 0 && u + 2 < n && v - 1 < n && dp[u + 2][v - 1] == INT_MAX) { q.push(make_pair(u + 2, v - 1)); dp[u + 2][v - 1] = dp[u][v] + 1; m[make_pair(u + 2, v - 1)] = "LL"; } if(u >= 0 && v - 2 >= 0 && u < n && v - 2 < n && dp[u][v - 2] == INT_MAX) { q.push(make_pair(u, v - 2)); dp[u][v - 2] = dp[u][v] + 1; m[make_pair(u, v - 2)] = "L"; } } } int main() { scanf("%d %d %d %d %d", &n, &a, &b, &x, &y); for(int i = 0; i < 201; i++) for(int j = 0; j < 201; j++) dp[i][j] = INT_MAX; solve(a, b); if(dp[x][y] == INT_MAX) printf("Impossible\n"); else { printf("%d\n", dp[x][y]); while((x != a) || (y != b)) { path.push_back(m[make_pair(x, y)]); if(path.back() == "UL") { x += 2; y += 1; } else if(path.back() == "UR") { x += 2; y -= 1; } else if(path.back() == "R") { y -= 2; } else if(path.back() == "LR") { x -= 2; y -= 1; } else if(path.back() == "LL") { x -= 2; y += 1; } else { y += 2; } } reverse(path.begin(), path.end()); for(auto it : path) cout<