#!/bin/python3 import sys import queue import copy class cell: def __init__(self,x,y,dis): self.x = x self.y = y self.dis = dis self.moves = [] def addMoves(self,move): self.moves.extend(move) def isInside(x,y,N): if x >= 0 and x < N and y >= 0 and y < N: return True; return False def minStep(knightPos,targetPos,N): dx = [-1,1,-2,2,1,-1] dy = [-2,-2,0,0,2,2] moves = ['UL','UR','L','R','LR','LL'] q = queue.Queue() k = cell(knightPos[0],knightPos[1],0) #k.addMoves(["O"]) q.put(k) visit = [[False]*N for x in range(N)] visit[knightPos[0]][knightPos[1]] = True while not q.empty(): t = q.get() #print(t.x,t.y) visit[t.x][t.y] = True if (t.x == targetPos[0] and t.y == targetPos[1]): #print(t.moves) return t for i in range(len(dx)): x = t.x + dx[i] y = t.y + dy[i] z = copy.copy(t.moves) #z.extend([moves[i]]) if isInside(x,y,N) and (not visit[x][y]): #print(t.moves+[moves[i]]) k = cell(x,y,t.dis+1) k.addMoves(z+[moves[i]]) #print(k.moves) #print(x,y,t.dis+1) q.put(k) #break N = int(input()) arr = [int(x) for x in input().strip().split()] knightPos = [arr[1],arr[0]] targetPos = [arr[3],arr[2]] k = minStep(knightPos,targetPos,N) if k == None: print('Impossible') else: print(k.dis) print(' '.join(k.moves)) #print(minStep(knightPos,targetPos,N)) #minStep(knightPos,targetPos,N)