#!/bin/python import sys def getMoves(xdisp, ydisp): """Return (a, b, c) where (xdisp, ydisp) = a u + b v + c w and u is the move vector in the general direction of (xdisp, ydisp) v is horizontal vector in the direction of (xdisp, 0) w is the vector (u - v) """ xd = abs(xdisp) yd = abs(ydisp) a = yd / 2 b = (xd - a) / 2 if b >= 0: return (a, b, 0) else: return (a + b, 0, -b) def getPath(xdisp, ydisp): order = ['UL', 'UR', 'R', 'LR', 'LL', 'L'] moves = getMoves(xdisp, ydisp) if xdisp > 0: if ydisp >= 0: family = ['LR', 'R', 'LL'] else: family = ['UR', 'R', 'UL'] else: if ydisp >= 0: family = ['LL', 'L', 'LR'] else: family = ['UL', 'L', 'UR'] pathDict = dict(zip(family, moves)) path = [] for d in order: if d in pathDict: path.extend([d] * pathDict[d]) return path def findShortestPath(i_start, j_start, i_end, j_end): dc = j_end - j_start dr = i_end - i_start if dr % 2 != 0: return None elif dr % 4 == 0: if dc % 2 == 1: return None else: return getPath(dc, dr) else: if dc % 2 == 0: return None else: return getPath(dc, dr) def printShortestPath(n, i_start, j_start, i_end, j_end): sp = findShortestPath(i_start, j_start, i_end, j_end) if sp == None: print "Impossible" else: print (len(sp)) print " ".join(sp) if __name__ == "__main__": n = int(raw_input().strip()) i_start, j_start, i_end, j_end = raw_input().strip().split(' ') i_start, j_start, i_end, j_end = [int(i_start), int(j_start), int(i_end), int(j_end)] printShortestPath(n, i_start, j_start, i_end, j_end)