#!/bin/python import time import math #from decimal import * #getcontext().prec = 50 #from Queue import PriorityQueue from collections import deque #from itertools import chain, combinations import random import bisect import copy modulo = 10**9 + 7 def moveTo(N,x,y,c,moves): nx = x + moves[c][0] ny = y + moves[c][1] if nx < 0 or nx >= N : return -1 if ny < 0 or ny >= N : return -1 return (nx,ny) def main(): import sys #from collections import deque #T = int(sys.stdin.readline().strip()) #_min = float('Inf') #for _ in xrange(T): N = int(sys.stdin.readline().strip()) (x,y,a,b) = map(int, sys.stdin.readline().strip().split() ) if (x,y) == (a,b): print 0 return moves = [ (-2,-1), (-2,1), (0,2), (2,1), (2,-1), (0,-2) ] names = [ ("UL",), ("UR",), ("R",), ("LR",), ("LL",), ("L",) ] _map = [0] * N for n in xrange(N): _map[n] = [()] *N _queue = deque([(x,y)]) while len(_queue) > 0: cp = _queue.popleft() for k in range(6): np = moveTo(N,cp[0],cp[1],k,moves) if np == -1 or _map[np[0]][np[1]] != () : continue _map[np[0]][np[1]] = _map[cp[0]][cp[1]] + names[k] if np == (a,b): print len(_map[a][b]) print " ".join(_map[a][b]) return _queue.append(np) print "Impossible" def generate(): M = 10**5 N = 1 print N, M for n in range(N): _str = "" for m in range(M): _str += "0 " print _str if __name__ == "__main__": #generate() #s= time.time() main() #print time.time()-s #test()