using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; class Solution { static void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { int moves = 0; List list = new List(); StringBuilder caminho = new StringBuilder(); if (i_start % 2 == 0 && i_end % 2 != 0 || i_start % 2 != 0 && i_end % 2 == 0) { Console.WriteLine("Impossible"); return; } else {//analisar colunas int qtsAndaColuna = Math.Abs(i_start - i_end) / 2; if (qtsAndaColuna % 2 == 0 && Math.Abs(j_start - j_end) % 2 != 0) {//se mover em numero pares de colunas e comeco em casa "branca" e termina em casa "preta" ou vice versa Console.WriteLine("Impossible"); return; } else if (qtsAndaColuna % 2 != 0 && Math.Abs(j_start - j_end) % 2 == 0) {//se mover em numero impares de colunas e comeco em casa "branca" e termina em casa "branca" ou vice versa Console.WriteLine("Impossible"); return; } else { //TUDO POSSIVEL while(i_start != i_end || j_start != j_end) { if (i_start > i_end && j_start > j_end) {//cima - esquerda i_start -= 2; j_start -= 1; list.Add(1); //caminho.Append("UL "); } else if (i_start > i_end && j_start <= j_end) {//cima - direita i_start -= 2; j_start += 1; list.Add(2); //caminho.Append("UR "); } else if (i_start == i_end && j_start < j_end) {//direita j_start += 2; list.Add(3); //caminho.Append("R "); } else if (i_start < i_end && j_start <= j_end) {//baixo - direita i_start += 2; j_start += 1; list.Add(4); //caminho.Append("LR "); } else if (i_start < i_end && j_start > j_end) {//baixo - esquerda i_start += 2; j_start -= 1; list.Add(5); //caminho.Append("LL "); } else if (i_start == i_end && j_start > j_end) {//esquerda j_start -= 2; list.Add(6); //caminho.Append("L "); } moves++; } list.Sort(); foreach (var item in list) { if(item == 1) { caminho.Append("UL "); } else if(item == 2) { caminho.Append("UR "); } else if (item == 3) { caminho.Append("R "); } else if (item == 4) { caminho.Append("LR "); } else if (item == 5) { caminho.Append("LL "); } else if (item == 6) { caminho.Append("L "); } } Console.WriteLine(moves); Console.WriteLine(caminho); } } } 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); } }