using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { static void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { if (Math.Abs(i_start-i_end) % 2 != 0){ Console.WriteLine("Impossible"); } else if (((Math.Abs(i_start-i_end)/2) % 2 == 1 & (Math.Abs(j_start-j_end)) % 2 == 0)){ Console.WriteLine("Impossible"); } else if (((Math.Abs(i_start-i_end)/2) % 2 == 0 & (Math.Abs(j_start-j_end)) % 2 != 0)){ Console.WriteLine("Impossible"); } else { int di = Math.Abs(i_start - i_end); int dj = Math.Abs(j_start - j_end); int iMoves = di / 2; int jMoves = 0; if (dj > iMoves){ jMoves = (dj - iMoves)/2; } int moves = iMoves + jMoves; Console.WriteLine(moves); for (int i = 0; i < iMoves; i++){ if(i_start < i_end){ Console.Write("L"); i_start += 2; if (j_start <= j_end){ Console.Write("R "); j_start += 1; } else { Console.Write("L "); j_start -= 1; } } else { Console.Write("U"); i_start -= 2; if (j_start <= j_end){ Console.Write("R "); j_start += 1; } else { Console.Write("L "); j_start -= 1; } } } for (int i = 0; i < jMoves; i++){ if (j_start <= j_end){ Console.Write("R "); j_start += 1; } else { Console.Write("L "); j_start -= 1; } } } } 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); } }