import java.io.*; import java.util.*; public class Main { static Scanner in = new Scanner(System.in); static PrintWriter out = new PrintWriter(System.out); static int dx[] = {-2, -2, 0, 2, 2, 0}; static int dy[] = {-1, 1, 2, 1, -1, -2}; static String dir[] = {"UL", "UR", "R", "LR", "LL", "L"}; public static void main(String[] args) throws IOException { int n = in.nextInt(); int starti = in.nextInt(), startj = in.nextInt(); int endi = in.nextInt(), endj = in.nextInt(); Queue q = new LinkedList<>(); q.add(new Pair(starti, startj, 0)); boolean visited[][] = new boolean[n][n]; Pair parent[][] = new Pair[n][n]; visited[starti][startj] = true; while (true) { if (q.isEmpty()) { out.println("Impossible"); break; } Pair p = q.poll(); if (p.i == endi && p.j == endj) { // print solution out.println(p.dist); Stack s = new Stack<>(); while (!(p.i == starti && p.j == startj)) { s.add(p); p = parent[p.i][p.j]; } StringBuilder sb = new StringBuilder(); while (!s.isEmpty()) { Pair x = s.pop(); for (int k = 0; k < 6; k++) { if (x.i == starti + dx[k] && x.j == startj + dy[k]) { sb.append(dir[k] + " "); break; } } starti = x.i; startj = x.j; } out.println(sb.toString().trim()); break; } for (int k = 0; k < 6; k++) { int x = p.i + dx[k]; int y = p.j + dy[k]; if (x >= 0 && y >= 0 && x < n && y < n && !visited[x][y]) { visited[x][y] = true; parent[x][y] = p; q.add(new Pair(x, y, p.dist + 1)); } } } out.flush(); } static class Pair { int i, j, dist; public Pair(int i, int j, int dist) { this.i = i; this.j = j; this.dist = dist; } } static class Scanner { StringTokenizer st; BufferedReader br; public Scanner(InputStream s) { br = new BufferedReader(new InputStreamReader(s)); } public String next() throws IOException { while (st == null || !st.hasMoreTokens()) st = new StringTokenizer(br.readLine()); return st.nextToken(); } public int nextInt() throws IOException { return Integer.parseInt(next()); } public long nextLong() throws IOException { return Long.parseLong(next()); } public String nextLine() throws IOException { return br.readLine(); } public double nextDouble() throws IOException { String x = next(); StringBuilder sb = new StringBuilder("0"); double res = 0, f = 1; boolean dec = false, neg = false; int start = 0; if (x.charAt(0) == '-') { neg = true; start++; } for (int i = start; i < x.length(); i++) if (x.charAt(i) == '.') { res = Long.parseLong(sb.toString()); sb = new StringBuilder("0"); dec = true; } else { sb.append(x.charAt(i)); if (dec) f *= 10; } res += Long.parseLong(sb.toString()) / f; return res * (neg ? -1 : 1); } public boolean ready() throws IOException { return br.ready(); } } }