import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { int dist; String s1; 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. boolean visited[][]=new boolean[n][n]; long dp[][]=new long[n][n]; String st[][]=new String[n][n]; HashSet hs=new HashSet<>(); for(long rows[]:dp) Arrays.fill(rows,999999l); ArrayList arr=new ArrayList<>(); long k=(printShortestPath(n,i_start,j_start,i_end,j_end,visited,dp,arr,st,i_start,j_start,hs)); if(k>=999999l) System.out.println("Impossible"); else { System.out.println(k); StringTokenizer sto=new StringTokenizer(st[i_start][j_start]," "); ArrayList ar=new ArrayList<>(); while(sto.hasMoreTokens()) ar.add(sto.nextToken().toString()); Collections.sort(ar,new Comparator(){ HashMap hm=new HashMap<>(); public int compare(String a,String b) { hm.put("UL",0); hm.put("UR",1); hm.put("R",2); hm.put("LR",3); hm.put("LL",4); hm.put("L",5); return hm.get(a)-hm.get(b); } }); for(String h:ar) System.out.print(h+" "); //System.out.println(st[i_start][j_start]); } // for(int i=0;i arr,String st[][],int i_par,int j_par,HashSet hs) { // Print the distance along with the sequence of moves. if(i_end==i_start&&j_start==j_end) return 0; if(visited[i_start][j_start]) { return dp[i_start][j_start]; } visited[i_start][j_start]=true; StringBuilder temp=new StringBuilder(); long min=999999l; hs.add(i_start*n+j_start); if(i_start-2>=0&&j_start-1>=0&&(!hs.contains((i_start-2)*n+(j_start-1)))) { ArrayList art=new ArrayList<>(); long y=printShortestPath(n,i_start-2,j_start-1,i_end,j_end,visited,dp,art,st,i_start,j_start,hs); if(y=0&&j_start+1 art=new ArrayList<>(); long y=printShortestPath(n,i_start-2,j_start+1,i_end,j_end,visited,dp,art,st,i_start,j_start,hs); if(y=0&&j_start+2 art=new ArrayList<>(); long y=printShortestPath(n,i_start,j_start+2,i_end,j_end,visited,dp,art,st,i_start,j_start,hs); if(y(); min=y; temp.append("R "); if(st[i_start][j_start+2]!=null) temp.append(st[i_start][j_start+2]); } } if(i_start+2 art=new ArrayList<>(); long y=printShortestPath(n,i_start+2,j_start+1,i_end,j_end,visited,dp,art,st,i_start,j_start,hs); //System.out.println((i_start+2)+" "+(j_start+1)); if(y=0&&(!hs.contains((i_start+2)*n+(j_start-1)))) { ArrayList art=new ArrayList<>(); long y=printShortestPath(n,i_start+2,j_start-1,i_end,j_end,visited,dp,art,st,i_start,j_start,hs); if(y=0&&j_start-2>=0&&(!hs.contains((i_start)*n+(j_start-2)))) { ArrayList art=new ArrayList<>(); long y=printShortestPath(n,i_start,j_start-2,i_end,j_end,visited,dp,art,st,i_start,j_start,hs); if(y