import java.io.*; import java.math.*; import java.util.*; public class Hackerrank{ InputStream in; PrintWriter out; void solve() { int n=ni(); int xs,ys,xe,ye; int dy[]=new int[]{-1,1,2,1,-1,-2}; int dx[]=new int[]{-2,-2,0,+2,+2,0}; String pos[]=new String[]{"UL ","UR ","R ","LR ","LL ","L "}; xs=ni();ys=ni();xe=ni();ye=ni(); boolean visited[][]=new boolean[n][n]; Queue q=new LinkedList(); Pair arr[]=new Pair[n*n]; arr[idx]=new Pair(xs,ys,"",0,-1); visited[xs][ys]=true; q.add(arr[idx++]); while (!q.isEmpty()) { Pair p=q.poll(); if (p.x==xe&&p.y==ye) { out.println(p.cnt); StringBuilder sb=new StringBuilder(); int tmp=p.i; while (tmp!=-1) { sb.insert(0,arr[tmp].s); tmp=arr[tmp].par; //tr(tmp); } out.println(sb); return; } for (int i=0;i<6;i++) { if (isValid(p.x+dx[i],p.y+dy[i],n)&&!visited[p.x+dx[i]][p.y+dy[i]]) { visited[p.x+dx[i]][p.y+dy[i]]=true; arr[idx]=new Pair(p.x+dx[i],p.y+dy[i],pos[i],p.cnt+1,p.i); q.add(arr[idx++]); } } } out.println("Impossible"); } int idx=0; boolean isValid(int x,int y,int n) { if (x<0||y<0||x>=n||y>=n) return false; else return true; } class Pair implements Comparable { int i; int x; int y; String s; int cnt=0; int par; Pair(int a,int b,String c,int d,int e) { x=a; y=b; s=c; cnt=d; i=idx; par=e; } @Override public boolean equals(Object o) { Pair other = (Pair)o; return x == other.x && y == other.y; } public String toString() { return x+" "+y; } @Override public int compareTo(Pair o) { if (x==o.x) return Integer.compare(y, o.y); else return Integer.compare(x, o.x); } @Override public int hashCode() { return Objects.hash(x, y); } } void run() throws Exception { String INPUT = "C:/Users/ayubs/Desktop/input.txt"; in = oj ? System.in : new FileInputStream(INPUT); out = new PrintWriter(System.out); //out = new PrintWriter(new File("C:/Users/ayubs/Desktop/hack.txt")); long s = System.currentTimeMillis(); solve(); out.flush(); tr(System.currentTimeMillis() - s + "ms"); } public static void main(String[] args) throws Exception { new Hackerrank().run(); } private byte[] inbuf = new byte[1024]; public int lenbuf = 0, ptrbuf = 0; private int readByte() { if (lenbuf == -1) throw new InputMismatchException(); if (ptrbuf >= lenbuf) { ptrbuf = 0; try { lenbuf = in.read(inbuf); } catch (IOException e) { throw new InputMismatchException(); } if (lenbuf <= 0) return -1; } return inbuf[ptrbuf++]; } private boolean inSpaceChar(int c) { return !(c >= 33 && c <= 126); } private int skip() { int b; while ((b = readByte()) != -1 && inSpaceChar(b)) ; return b; } private double nd() { return Double.parseDouble(ns()); } private char nc() { return (char) skip(); } private String ns() { int b = skip(); StringBuilder sb = new StringBuilder(); while (!(inSpaceChar(b))) { // when nextLine, (inSpaceChar(b) && b != ' ') sb.appendCodePoint(b); b = readByte(); } return sb.toString(); } private char[] ns(int n) { char[] buf = new char[n]; int b = skip(), p = 0; while (p < n && !(inSpaceChar(b))) { buf[p++] = (char) b; b = readByte(); } return n == p ? buf : Arrays.copyOf(buf, p); } private char[][] nm(int n, int m) { char[][] map = new char[n][]; for (int i = 0; i < n; i++) map[i] = ns(m); return map; } private int[] na(int n) { int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = ni(); return a; } private int ni() { int num = 0, b; boolean minus = false; while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-')) ; if (b == '-') { minus = true; b = readByte(); } while (true) { if (b >= '0' && b <= '9') { num = num * 10 + (b - '0'); } else { return minus ? -num : num; } b = readByte(); } } private long nl() { long num = 0; int b; boolean minus = false; while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-')) ; if (b == '-') { minus = true; b = readByte(); } while (true) { if (b >= '0' && b <= '9') { num = num * 10 + (b - '0'); } else { return minus ? -num : num; } b = readByte(); } } //private boolean oj = false; private boolean oj = true; private void tr(Object... o) { if (!oj) System.out.println(Arrays.deepToString(o)); } }