#!/bin/python3 # difference in row number shud be even import sys def abs(val): if val>0: return val else: return -val def find_dir(i_curr,j_curr,i_end,j_end): if i_curr>=i_end and j_curr>=j_end: return (i_curr-2,j_curr-1,"UL") if i_curr>=i_end and j_curr<=j_end: return (i_curr-2,j_curr+1,"UR") if i_curr==i_end and (j_curr-j_end)==-2: return (i_curr,j_curr+2,"R") if i_curr<=i_end and j_curr<=j_end: return (i_curr+2,j_curr+1,"LR") if i_curr<=i_end and j_curr>=j_end: return (i_curr+2,j_curr-1,"LL") if i_curr==i_end and (j_curr-j_end)==2: return (i_curr,j_curr-2,"L") # else: # print("error in find_dir",i_curr,j_curr,i_end,j_end) def transform(path_list): options={"UL":0, "UR":1, "R":2, "LR":3, "LL":4, "L":5} #for k,v in options.items(): # print(k,v) order=[options[p] for p in path_list] z=[o for _,o in sorted(zip(order,path_list))] #print(path_list,order,z) return z def printShortestPath(n, i_start, j_start, i_end, j_end): num_jumps=abs(i_start-i_end) #print("num_vertical jumps:",num_jumps) if (num_jumps)%2==1: print("Impossible") else: num_j_jumps=abs(j_start-j_end) i_curr=i_start j_curr=j_start path_list=[] for jump in range(num_jumps//2): i_curr,j_curr,path=find_dir(i_curr,j_curr,i_end,j_end) #print("route:",i_curr,j_curr,path) path_list.append(path) if i_curr==i_end and j_curr==j_end: print(num_jumps//2) path_list_transformed=transform(path_list) print(*path_list_transformed,sep=" ") else: if i_curr==i_end and (j_curr-j_end)==2: j_curr-=2 path_list.append("L") if i_curr==i_end and (j_curr-j_end)==-2: j_curr+=2 path_list.append("R") if i_curr==i_end and j_curr==j_end: print((num_jumps//2)+1) path_list_transformed=transform(path_list) print(*path_list_transformed,sep=" ") else: print("Impossible") # Print the distance along with the sequence of moves. 7 0061 3 lr ll lr # 5 0 0 2 3 According to priorities, it is expected to be : 2 R LR if __name__ == "__main__": n = int(input().strip()) i_start, j_start, i_end, j_end = 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)