INF = float('inf') moves = [ ('UL', -2, -1), ('UR', -2, 1), ('R', 0, 2), ('LR', 2, 1), ('LL', 2, -1), ('L', 0, -2) ] n = int(input()) i0, j0, i1, j1 = map(int, input().split()) def adj(i, j): return ( (desc, i + di, j + dj) for desc, di, dj in moves if 0 <= i + di < n and 0 <= j + dj < n ) def bfs(i0, j0): d = [[INF for _ in range(n)] for _ in range(n)] d[i0][j0] = 0 q, qi = [(i0, j0)], 0 while qi < len(q): i, j = q[qi] for _, ii, jj in adj(i, j): if d[ii][jj] == INF: d[ii][jj] = d[i][j] + 1 q.append((ii, jj)) qi += 1 return d def path(i, j, i1, j1): for _ in range(best): desc, i, j = next( (desc, ii, jj) for desc, ii, jj in adj(i, j) if d0[ii][jj] == d0[i][j] + 1 and d1[ii][jj] == d1[i][j] - 1 ) yield desc d0, d1 = bfs(i0, j0), bfs(i1, j1) best = d0[i1][j1] if best == INF: print('Impossible') else: print(best) print(' '.join(path(i0, j0, i1, j1)))