import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static int printShortestPath(boolean[][] visited,int[][] tab,ArrayList[][] l,int n, int i_start, int j_start, int i_end, int j_end) { if(i_start<0||i_start>=n||j_start<0||j_start>=n||visited[i_start][j_start]) { return Integer.MAX_VALUE; } if(i_start==i_end&&j_start==j_end) { return 0; } if(tab[i_start][j_start]!=-1) return tab[i_start][j_start]; int UL,UR,R,LR,LL,L; visited[i_start][j_start]=true; UL=printShortestPath(visited,tab,l,n, i_start-2, j_start-1, i_end, j_end); UR=printShortestPath(visited,tab,l,n, i_start-2, j_start+1, i_end, j_end); R=printShortestPath(visited,tab,l,n, i_start, j_start+2, i_end, j_end); LR=printShortestPath(visited,tab,l,n, i_start+2, j_start+1, i_end, j_end); LL=printShortestPath(visited,tab,l,n, i_start+2, j_start-1, i_end, j_end); L=printShortestPath(visited,tab,l,n, i_start, j_start-2, i_end, j_end); int max=Integer.MAX_VALUE; ArrayList temp=null; if(max>UL) { max=UL; temp=l[i_start-2][j_start-1]; } if(max>UR) { max=UR; temp=l[i_start-2][j_start+1]; } if(max>R) { max=R; temp=l[i_start][j_start+2]; } if(max>LR) { max=LR; temp=l[i_start+2][j_start+1]; } if(max>LL) { max=LL; temp=l[i_start+2][j_start-1]; } if(max>L) { max=L; temp=l[i_start][j_start-2]; } if(max==Integer.MAX_VALUE) { visited[i_start][j_start]=false; tab[i_start][j_start]=Integer.MAX_VALUE; return tab[i_start][j_start]; } if(max==UL) { l[i_start][j_start].add("UL"); tab[i_start][j_start]=tab[i_start-2][j_start-1]+1; } else { if(max==UR) { l[i_start][j_start].add("UR"); tab[i_start][j_start]=tab[i_start-2][j_start+1]+1; } else { if(max==UL) { l[i_start][j_start].add("UL"); tab[i_start][j_start]=tab[i_start-2][j_start-1]+1; } else { if(max==R) { l[i_start][j_start].add("R"); tab[i_start][j_start]=tab[i_start][j_start+2]+1; } else { if(max==LR) { l[i_start][j_start].add("LR"); tab[i_start][j_start]=tab[i_start+2][j_start+1]+1; } else { if(max==LL) { l[i_start][j_start].add("LL"); tab[i_start][j_start]=tab[i_start+2][j_start-1]+1; } else { if(max==L) { l[i_start][j_start].add("L"); tab[i_start][j_start]=tab[i_start][j_start-2]+1; } } } } } } } // System.out.println("i="+i_start+" j="+j_start+" "+l[i_start][j_start]); if(temp!=null) l[i_start][j_start].addAll(temp); visited[i_start][j_start]=false; return tab[i_start][j_start]; } 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(); boolean[][] visited=new boolean[n][n]; int[][] tab=new int[n][n]; ArrayList[][] l=new ArrayList[n][n]; for(int i=0;i i=l[i_start][j_start].iterator(); while (i.hasNext()) { String s=i.next(); if(s.equals("UL")) { System.out.print(s+" "); i.remove(); } } i=l[i_start][j_start].iterator(); while (i.hasNext()) { String s=i.next(); if(s.equals("UR")) { System.out.print(s+" "); i.remove(); } } i=l[i_start][j_start].iterator(); while (i.hasNext()) { String s=i.next(); if(s.equals("R")) { System.out.print(s+" "); i.remove(); } } i=l[i_start][j_start].iterator(); while (i.hasNext()) { String s=i.next(); if(s.equals("LR")) { System.out.print(s+" "); i.remove(); } } i=l[i_start][j_start].iterator(); while (i.hasNext()) { String s=i.next(); if(s.equals("LL")) { System.out.print(s+" "); i.remove(); } } i=l[i_start][j_start].iterator(); while (i.hasNext()) { String s=i.next(); if(s.equals("L")) { System.out.print(s+" "); i.remove(); } } } in.close(); } }