#include using namespace std; const int N = 205; int last[N][N]; int bx[N][N], by[N][N]; int dx[] = {-2, -2, 0, 2, 2, 0}; int dy[] = {-1, 1, 2, 1, -1, -2}; string s[] = {"UL", "UR", "R", "LR", "LL", "L"}; int n; bool valid(int i, int j) { return 0 <= i && i < n && 0 <= j && j < n; } int main() { scanf("%d", &n); memset(last, -1, sizeof(last)); int si, sj, fi, fj; scanf("%d %d %d %d", &si, &sj, &fi, &fj); queue> q; last[si][sj] = 0; q.emplace(si, sj); while (!q.empty()) { int ni, nj; tie(ni, nj) = q.front(); q.pop(); for (int i = 0; i < 6; i++) { int ti = ni + dx[i]; int tj = nj + dy[i]; if (!valid(ti, tj)) continue; if (last[ti][tj] == -1) { last[ti][tj] = i; bx[ti][tj] = ni; by[ti][tj] = nj; q.emplace(ti, tj); } } } if (last[fi][fj] == -1) { puts("Impossible"); return 0; } vector ans; while (fi != si || fj != sj) { ans.push_back(s[last[fi][fj]]); int tx = bx[fi][fj]; int ty = by[fi][fj]; fi = tx; fj = ty; } reverse(ans.begin(), ans.end()); printf("%d\n", ans.size()); for (auto it : ans) printf("%s ", it.c_str()); return 0; }