using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { static void printShortestPath(int n, int j_start, int i_start, int j_end, int i_end) { if(Math.Abs(j_start - j_end)%2!=0) { Console.WriteLine("Impossible"); return; } if(i_start == i_end && Math.Abs(j_start - j_end)%4!=0) { Console.WriteLine("Impossible"); return; } var num = 0; var moves = new List(); while(j_start != j_end){ var goup = j_start>j_end; var goleft = i_start > i_end; if(goup && goleft){ j_start-=2; i_start-=1; moves.Add("UL"); continue; } if(!goup && goleft){ j_start+=2; i_start-=1; moves.Add("LL"); continue; } if(goup && !goleft){ j_start-=2; i_start+=1; moves.Add("UR"); continue; } if(!goup && !goleft){ j_start+=2; i_start+=1; moves.Add("LR"); continue; } } if(Math.Abs(i_start - i_end)%2!=0) {Console.WriteLine("Impossible"); return;} while(i_start != i_end){ if(i_start > i_end){ i_start-=2; moves.Add("L"); }else{ i_start+=2; moves.Add("R"); } } Console.WriteLine(moves.Count); Console.WriteLine(string.Join(" ",moves)); } static void Main(String[] args) { int n = Convert.ToInt32(Console.ReadLine()); string[] tokens_i_start = Console.ReadLine().Split(' '); int i_start = Convert.ToInt32(tokens_i_start[0]); int j_start = Convert.ToInt32(tokens_i_start[1]); int i_end = Convert.ToInt32(tokens_i_start[2]); int j_end = Convert.ToInt32(tokens_i_start[3]); printShortestPath(n, i_start, j_start, i_end, j_end); } }