#!/bin/python import sys di = {} qu = [] def addqu(i,j,val): if i-2>=0 and j-1>=0 and ((i-2,j-1) not in di): qu.append((i-2,j-1,val+1)) di[(i-2,j-1)]=(i,j,'UL') if i-2>=0 and j+1=0 and ((i+2,j-1) not in di): qu.append((i+2,j-1,val+1)) di[(i+2,j-1)]=(i,j,'LL') if j-2>=0 and ((i,j-2) not in di): qu.append((i,j-2,val+1)) di[(i,j-2)]=(i,j,'L') def printShortestPath(n, i_start, j_start, i_end, j_end): # Print the distance along with the sequence of moves. di[(i_start, j_start)] = (-1,-1,'X') lq = 0 mini = -1 addqu(i_start, j_start,0) while lqval): mini = val elif i!=i_end or j!=j_end: addqu(i,j,val) if mini==-1: print "Impossible" else: print mini i,j,d = di[(i_end,j_end)] dlist = [] dlist.append(d) while d!='X': i,j,d = di[(i,j)] dlist.append(d) for i in xrange(len(dlist)-2,-1,-1): print dlist[i], 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) #BFS with visited block marker.