using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { static int[] iMoves = {-2, -2, 0, 2, 2, 0}; static int[] jMoves = {-1, 1, 2, 1, -1, -2}; //static string[] tMoves = {"UR","LR","R","UL","LL","L"}; static string[] tMoves = {"UL","UR","R","LR","LL","L"}; static string impossible = "Impossible"; 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. var moves = BFS(i_start, j_start, i_end, j_end, n); if (moves == impossible) { Console.WriteLine(impossible); } else { moves = moves.Trim(); Console.WriteLine(moves.Split(' ').Length); Console.WriteLine(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); } static bool valid(int x, int y, int numSquares) { if (x < 0 || y < 0 || x >= numSquares || y >= numSquares) return false; return true; } static string BFS(int i_start, int j_start, int i_end, int j_end, int n) { var visitedBoxes = new List(); var box = new Box(i_start, j_start); var queue = new List(); queue.Add(box); while(queue.Count() != 0) { var boxx = queue.FirstOrDefault(); queue.Remove(boxx); int i = boxx.i; int j = boxx.j; int dist = boxx.dist; string dMoves = boxx.dMove; if (i == i_end && j == j_end) { return dMoves; } if (visitedBoxes.Where(b => b.i == boxx.i && b.j == boxx.j).Count() == 0) { visitedBoxes.Add(boxx); for(int k = 0; k < iMoves.Length; k++) { int newI = i + iMoves[k]; int newJ = j + jMoves[k]; if (valid(newJ, newI, n)){ queue.Add(new Box(newI, newJ, dist+1, dMoves + " " + tMoves[k])); } } } } return impossible; } struct Box { public int i; public int j; public int dist; public string dMove; public Box(int p1, int p2 ) { i = p1; j = p2; dist = 0; dMove =""; } public Box(int p1, int p2, int _dist, string _dMove) { i = p1; j = p2; dist = _dist; dMove = _dMove; } } }