#include using namespace std; int dis[205][205]; int dx[] = {-2, -2, 0, 2, 2, 0}; int dy[] = {-1, 1, 2, 1, -1, -2}; queue < pair > Q; int n; bool in(int x, int y) { return 0 <= x && x < n && 0 <= y && y < n; } char tp[][5] = {"UL", "UR", "R", "LR", "LL", "L"}; void findpath(int x, int y) { for (int i = 0; i < 6; ++i) { int xx = x + dx[i]; int yy = y + dy[i]; if (!in(xx, yy) || dis[xx][yy] == -1 || dis[xx][yy] + 1 != dis[x][y]) continue; printf("%s ", tp[i]); findpath(xx, yy); break; } } int main() { int sx, sy, tx, ty; cin >> n >> sx >> sy >> tx >> ty; memset(dis, -1, sizeof(dis)); dis[tx][ty] = 0; Q.push( {tx, ty} ); while (!Q.empty()) { int x = Q.front().first, y = Q.front().second; Q.pop(); for (int i = 0; i < 6; ++i) { int xx = x + dx[i]; int yy = y + dy[i]; if (!in(xx, yy) || dis[xx][yy] != -1) continue; dis[xx][yy] = dis[x][y] + 1; Q.push( {xx, yy} ); } } if (dis[sx][sy] == -1) { puts("Impossible"); return 0; } printf("%d\n", dis[sx][sy]); findpath(sx, sy); return 0; }