import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { // Print the distance along with the sequence of moves. int i_diff = i_end - i_start; int j_diff = j_end - j_start; i_diff = i_diff < 0 ? 0 - i_diff : i_diff; j_diff = j_diff < 0 ? 0 - j_diff : j_diff; if (i_diff % 2 == 1){ System.out.println("Impossible"); return; } if ((i_diff / 2) % 2 - j_diff % 2 != 0){ System.out.println("Impossible"); return; } Node root = new Node(null, i_start, j_start); boolean[][] visited = new boolean[n][n]; ArrayList list = new ArrayList<>(); list.add(root); Node cur = root; while (cur.i != i_end || cur.j != j_end){ cur = list.remove(0); if (cur.i - 2 >= 0 && cur.j - 1 >= 0 && !visited[cur.i - 2][cur.j - 1]){ Node newNode = new Node(cur, cur.i - 2, cur.j - 1); visited[cur.i - 2][cur.j - 1] = true; list.add(newNode); } if (cur.i - 2 >= 0 && cur.j + 1 < n && !visited[cur.i - 2][cur.j + 1]){ Node newNode = new Node(cur, cur.i - 2, cur.j + 1); visited[cur.i - 2][cur.j + 1] = true; list.add(newNode); } if (cur.j + 2 < n && !visited[cur.i][cur.j + 2]){ Node newNode = new Node(cur, cur.i, cur.j + 2); visited[cur.i][cur.j + 2] = true; list.add(newNode); } if (cur.i + 2 < n && cur.j + 1 < n && !visited[cur.i + 2][cur.j + 1]){ Node newNode = new Node(cur, cur.i + 2, cur.j + 1); visited[cur.i + 2][cur.j + 1] = true; list.add(newNode); } if (cur.i + 2 < n && cur.j - 1 >= 0 && !visited[cur.i + 2][cur.j - 1]){ Node newNode = new Node(cur, cur.i + 2, cur.j - 1); visited[cur.i + 2][cur.j - 1] = true; list.add(newNode); } if (cur.j - 2 >= 0 && !visited[cur.i][cur.j - 2]){ Node newNode = new Node(cur, cur.i, cur.j - 2); visited[cur.i][cur.j - 2] = true; list.add(newNode); } } ArrayList retList = new ArrayList<>(); while(cur.parent != null){ retList.add(cur); cur = cur.parent; } retList.add(cur); StringBuilder sb = new StringBuilder(""); for (int t = retList.size() - 2; t >= 0; t--){ int i_d = retList.get(t).i - retList.get(t+1).i; int j_d = retList.get(t).j - retList.get(t+1).j; if (i_d == -2 && j_d == -1) sb.append("UL "); if (i_d == -2 && j_d == 1) sb.append("UR "); if (i_d == 0 && j_d == 2) sb.append("R "); if (i_d == 2 && j_d == 1) sb.append("LR "); if (i_d == 2 && j_d == -1) sb.append("LL "); if (i_d == 0 && j_d == -2) sb.append("L "); } sb.deleteCharAt(sb.length()-1); System.out.println(retList.size() - 1); System.out.println(sb.toString()); } public static class Node{ public int i, j; public Node parent; public Node (Node parent, int i, int j){ this.parent = parent; this.i = i; this.j = j; } } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int i_start = in.nextInt(); int j_start = in.nextInt(); int i_end = in.nextInt(); int j_end = in.nextInt(); printShortestPath(n, i_start, j_start, i_end, j_end); in.close(); } }