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) { ArrayList moves = new ArrayList(); if(i_start % 2 == 0 && i_end % 2 == 0) {} else if(i_start % 2 == 1 && i_end % 2 == 1) {} else { System.out.println("Impossible"); return; } int level = 0; if(i_start > i_end) { level = (i_start - i_end) / 2; } else { level = (i_end - i_start) / 2; } if(level % 2 == 0) { if(j_start % 2 == 0 && j_end % 2 == 0) {} else if(j_start % 2 == 1 && j_end % 2 == 1) {} else { System.out.println("Impossible"); return; } } else { if(j_start % 2 == 0 && j_end % 2 == 1) {} else if(j_start % 2 == 1 && j_end % 2 == 0) {} else { System.out.println("Impossible"); return; } } int i_intermediate = i_start; int j_intermediate = j_start; if(i_start > i_end && j_start > j_end) { for(int i = 0; i < level; i++) { moves.add("UL"); i_intermediate = i_intermediate - 2; j_intermediate = j_intermediate - 1; if(j_intermediate == j_end) { break; } } } else if(i_start > i_end && j_start < j_end) { for(int i = 0; i < level; i++) { moves.add("UR"); i_intermediate = i_intermediate - 2; j_intermediate = j_intermediate + 1; if(j_intermediate == j_end) { break; } } } else if(i_start < i_end && j_start > j_end) { for(int i = 0; i < level; i++) { moves.add("LL"); i_intermediate = i_intermediate + 2; j_intermediate = j_intermediate - 1; if(j_intermediate == j_end) { break; } } } else if(i_start < i_end && j_start < j_end) { for(int i = 0; i < level; i++) { moves.add("LR"); i_intermediate = i_intermediate + 2; j_intermediate = j_intermediate + 1; if(j_intermediate == j_end) { break; } } } if(i_intermediate >= 0 && i_intermediate < n && j_intermediate >= 0 && j_intermediate < n) {} else { System.out.println("Impossible"); return; } int movement = 0; if(j_intermediate < j_end) { movement = (j_end - j_intermediate) / 2; for(int i = 0; i < movement; i++) { moves.add("R"); } } else if(j_intermediate > j_end){ movement = (j_intermediate - j_end) / 2; for(int i = 0; i < movement; i++) { moves.add("L"); } } else { if(i_intermediate < i_end) { level = (i_end - i_intermediate) / 2; if(level % 2 == 0) { for(int i = 0; i < level; i += 2) { if(i_intermediate + 2 >= n) { moves.add("LL"); i_intermediate = i_intermediate + 2; j_intermediate = j_intermediate - 1; moves.add("LR"); i_intermediate = i_intermediate + 2; j_intermediate = j_intermediate + 1; } else { moves.add("LR"); i_intermediate = i_intermediate + 2; j_intermediate = j_intermediate + 1; moves.add("LL"); i_intermediate = i_intermediate + 2; j_intermediate = j_intermediate - 1; } } } } else if(i_intermediate > i_end) { level = (i_intermediate - i_end) / 2; if(level % 2 == 0) { for(int i =0; i < level; i++) { if(i_intermediate - 2 < 0) { moves.add("UR"); i_intermediate = i_intermediate - 2; j_intermediate = j_intermediate + 1; moves.add("UL"); i_intermediate = i_intermediate - 2; j_intermediate = j_intermediate - 1; } else { moves.add("UL"); i_intermediate = i_intermediate - 2; j_intermediate = j_intermediate - 1; moves.add("UR"); i_intermediate = i_intermediate - 2; j_intermediate = j_intermediate + 1; } } } } } System.out.println(moves.size()); for(String S : moves) { System.out.print(S + " "); } System.out.println(); } 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(); } }