import java.util.Scanner; /** * Created by ranjeetsingh on 16/12/17. */ public class Solution { //UL, UR, R, LR, LL, L private static int direction(int is, int js, int ie, int je) { if (is == ie) { return 5; } if (js == je) { return 6; } if (is < ie) { if (js < je) { return 1; //DR } else { return 2; //DL } } else { if (js < je) { return 3; //UR } else { return 4; //UL } } } private static int LR_UL(int n, int is, int js, int ie, int je) { if (!(is == ie && js == je) && (is >= 0 && js >= 0 && ie >= 0 && je >= 0) && (is < n && js < n && ie < n && je < n) && (is - ie) % 2 == 0 && (is - ie) / 2 == (js - je)) { return js - je; } return -1; } static int UR_LL(int n, int is, int js, int ie, int je) { if (!(is == ie && js == je) && (is >= 0 && js >= 0 && ie >= 0 && je >= 0) && (is < n && js < n && ie < n && je < n) && (js - je) % 2 == 0 && (js - je) / 2 == (is - ie)) { return is - ie; } return -1; } private static int L_R(int n, int is, int js, int ie, int je) { return !(is == ie && js == je) && (is >= 0 && js >= 0 && ie >= 0 && je >= 0) && (is < n && js < n && ie < n && je < n) && (js - je) % 2 == 0 ? (js - je) / 2 : -1; } private static void printShortestPath(int n, int is, int js, int ie, int je) { StringBuilder builder; int tmp1; if ((is - ie) % 2 != 0 || (js - je) % 2 != 0 && is == ie || (is == ie && js == je)) { System.out.println("Impossible"); } else { switch (direction(is, js, ie, je)) { case 1: //DR tmp1 = L_R(n, is, js, ie, je); if (tmp1 != -1) { print("R", tmp1); } else { int r = 0, jn = je, in = ie; while (js > jn) { int tmp = L_R(n, is, js, ie, jn); if (tmp != -1) { builder = new StringBuilder(); for (int i = 0; i < r; i++) { builder.append("LR "); } for (int i = 0; i < tmp; i++) { builder.append("R "); } printI(builder.toString()); return; } r++; jn++; in += 2; } print("L", L_R(n, is, js, ie, je)); } break; case 2: //DL tmp1 = UR_LL(n, is, js, ie, je); if (tmp1 != -1) { print("LL", tmp1); } else { int r = 0, jn = je; while (js > jn) { int tmp = UR_LL(n, is, js, ie, jn); if (tmp != -1) { builder = new StringBuilder(); for (int i = 0; i < r; i++) { builder.append("L "); } for (int i = 0; i < tmp; i++) { builder.append("LL "); } printI(builder.toString()); return; } r++; jn += 2; } print("L", L_R(n, is, js, ie, je)); } break; case 3: //UR tmp1 = UR_LL(n, is, js, ie, je); if (tmp1 != -1) { print("UR", tmp1); } else { int r = 0, jn = je; while (js < jn) { int tmp = UR_LL(n, is, js, ie, jn); if (tmp != -1) { builder = new StringBuilder(); for (int i = 0; i < r; i++) { builder.append("R "); } for (int i = 0; i < tmp; i++) { builder.append("UR "); } printI(builder.toString()); return; } r++; jn -= 2; } print("R", L_R(n, is, js, ie, je)); return; } break; case 4: //UL tmp1 = LR_UL(n, is, js, ie, je); if (tmp1 != -1) { print("UL", tmp1); } else { int r = 0, jn = je; while (js > jn) { int tmp = LR_UL(n, is, js, ie, jn); if (tmp != -1) { builder = new StringBuilder(); for (int i = 0; i < r; i++) { builder.append("L "); } for (int i = 0; i < tmp; i++) { builder.append("UL "); } printI(builder.toString()); return; } r++; jn += 2; } print("L", L_R(n, is, js, ie, je)); } break; case 5: // i == i builder = new StringBuilder(); boolean b = true; for (int i = 0; i < Math.abs(je - js) / 2; i++) { builder.append(js < je ? (b ? "UR " : "LR ") : (b ? "UL " : "LL ")); b = !b; } System.out.println(Math.abs(je - js) / 2); System.out.println(builder.toString().trim()); break; case 6: // j == j builder = new StringBuilder(); boolean t = true; for (int i = 0; i < Math.abs(ie - is) / 2; i++) { builder.append(is < ie ? (t ? "LR " : "LL ") : (t ? "UL " : "UR ")); t = !t; } System.out.println(Math.abs(ie - is) / 2); System.out.println(builder.toString().trim()); break; } } } private static void printI(String string) { String[] tkns = string.trim().split(" "); StringBuilder builder = new StringBuilder(); for (int i = tkns.length - 1; i >= 0; i--) { builder.append(tkns[i]).append(" "); } System.out.println(tkns.length); System.out.println(builder.toString()); } private static void print(String tag, int n) { if (-1 == n) { System.out.println("Impossible"); return; } StringBuilder builder = new StringBuilder(); for (int i = 0; i < n; i++) { builder.append(tag).append(" "); } System.out.println(n); System.out.println(builder.toString().trim()); } 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(); } }