#!/bin/python3 def printShortestPath(n, i_start, j_start, i_end, j_end): # n = 5..200 # 0 .. n = i, j # n = 7 # (6, 6) (0, 1) # < > start_pos = [i_start, j_start] end_pos = [i_end, j_end] current_pos = [i_start, j_start] moves = 0 sequence = [] while True: if current_pos == end_pos: print(moves) print(' '.join(sequence)) # sequence of moves return # must go lower right if current_pos[0] < end_pos[0] and current_pos[1] < end_pos[1]: # if current_pos[0] < 0 or current_pos[1] < 0 or current_pos[0] >= n or current_pos[1] >= n: # print("Impossible move") # else: sequence.append("LR") current_pos[0] += 2 current_pos[1] += 1 moves += 1 if current_pos[0] - 1 == end_pos[0] and current_pos[1] == end_pos[1]: print("Impossible") return # must go lower left elif current_pos[0] < end_pos[0] and current_pos[1] > end_pos[1]: # if current_pos[0] < 0 or current_pos[1] < 0 or current_pos[0] >= n or current_pos[1] >= n: # print("Impossible move") # else: sequence.append("LL") current_pos[0] += 2 current_pos[1] -= 1 moves += 1 if current_pos[0] - 1 == end_pos[0] and current_pos[1] == end_pos[1]: print("Impossible") return # must go up left elif current_pos[0] > end_pos[0] and current_pos[1] > end_pos[1]: # if current_pos[0] < 0 or current_pos[1] < 0 or current_pos[0] >= n or current_pos[1] >= n: # print("Impossible move") # else: sequence.append("UL") current_pos[0] -= 2 current_pos[1] -= 1 moves += 1 # print(current_pos) # print(sequence) if current_pos[0] + 1 == end_pos[0] and current_pos[1] == end_pos[1]: print("Impossible") return # must go up right elif current_pos[0] > end_pos[0] and current_pos[1] < end_pos[1]: # if current_pos[0] < 0 or current_pos[1] < 0 or current_pos[0] >= n or current_pos[1] >= n: # print("Impossible move") # else: sequence.append("UR") current_pos[0] -= 2 current_pos[1] += 1 moves += 1 # print(current_pos) # print(sequence) if current_pos[0] + 1 == end_pos[0] and current_pos[1] == end_pos[1]: print("Impossible") return # must go right elif current_pos[0] == end_pos[0] and current_pos[1] < end_pos[1]: sequence.append("R") current_pos[1] += 2 moves += 1 # print(current_pos) # print(sequence) if current_pos[1] > end_pos[1]: print("Impossible") return # must go left elif current_pos[0] == end_pos[0] and current_pos[1] > end_pos[1]: # if current_pos[0] < 0 or current_pos[1] < 0 or current_pos[0] >= n or current_pos[1] >= n: # print("Impossible move") # else: sequence.append("L") current_pos[1] -= 2 moves += 1 # print(current_pos) # print(sequence) if current_pos[1] < end_pos[1]: print("Impossible") return # UL, UR, R, LR, LL, L # Must go directly down (LR) elif current_pos[0] < end_pos[0] and current_pos[1] == end_pos[1] and \ current_pos[0] + 2 < n and current_pos[1] + 1 < n: # if current_pos[0] < 0 or current_pos[1] < 0 or current_pos[0] >= n or current_pos[1] >= n: # print("Impossible move") # else: sequence.append("LR") current_pos[0] += 2 current_pos[1] += 1 moves += 1 # print(current_pos) # print(sequence) # UL, UR, R, LR, LL, L # Must go directly down (LR) elif current_pos[0] < end_pos[0] and current_pos[1] == end_pos[1] and \ current_pos[0] + 2 < n and current_pos[1] - 1 > -1: # if current_pos[0] < 0 or current_pos[1] < 0 or current_pos[0] >= n or current_pos[1] >= n: # print("Impossible move") # else: sequence.append("LL") current_pos[0] += 2 current_pos[1] -= 1 moves += 1 # print(current_pos) # print(sequence) else: print("Impossible") break 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)