import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static int num; static String result; 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. if((Math.abs(i_end - i_start))%2 != 0){ System.out.println("Impossible"); return; } if (!possible(i_start,j_start,i_end,j_end)){ System.out.println("Impossible"); return; } num = 0; result = ""; move(i_start,j_start, i_end, j_end); System.out.println(num); System.out.println(result); } private static void move(int i_start, int j_start, int i_end, int j_end) { if(i_start == i_end && j_start == j_end){ return; } if(i_start== i_end){ if(j_start < j_end){ j_start +=2; result +="R "; num++; move(i_start,j_start,i_end,j_end); return; }else if(j_start > j_end){ j_start -=2; result +="L "; num++; move(i_start,j_start,i_end,j_end); return; } } if(i_start > i_end){ if(j_start >= j_end){ j_start -=1; i_start -=2; result +="UL "; num++; move(i_start,j_start,i_end,j_end); return; }else if(j_start < j_end){ j_start +=1; i_start -=2; result +="UR "; num++; move(i_start,j_start,i_end,j_end); return; } } if(i_start < i_end) { if (j_start <= j_end) { j_start += 1; i_start += 2; result +="LR "; num++; move(i_start, j_start, i_end, j_end); return; } else if (j_start > j_end) { j_start -= 1; i_start += 2; result +="LL "; num++; move(i_start, j_start, i_end, j_end); return; } } } static boolean possible(int i_start, int j_start, int i_end, int j_end){ return ((Math.abs(i_start - i_end)/2)%2 == 0 && (Math.abs(j_start - j_end)%2 == 0)) || ((Math.abs(i_start - i_end)/2)%2 != 0 && (Math.abs(j_start + 1 - j_end)%2 == 0)); } 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(); } }