#!/bin/python3 import sys def printShortestPath(n, i_start, j_start, i_end, j_end): #board = [[sys.maxsize for i in range(n)] for j in range(n)] visited = [[False for i in range(n)] for j in range(n)] parent = [[0 for i in range(n)] for j in range(n)] Q = [[i_start, j_start, 0]] sol=False while(len(Q)>0): curr = Q.pop(0) if (curr[0] == i_end and curr[1] == j_end): sol=True break if(visited[curr[0]][curr[1]] != False): continue visited[curr[0]][curr[1]] = True if(curr[0]-2 >= 0): if(curr[1]-1 >= 0): if(visited[curr[0]-2][curr[1]-1] == False): Q.append([curr[0]-2, curr[1]-1, curr[2]+1]) if(parent[curr[0]-2][curr[1]-1] == 0): parent[curr[0]-2][curr[1]-1] = 'UL' if(curr[1]+1 < n): if(visited[curr[0]-2][curr[1]+1] == False): Q.append([curr[0]-2, curr[1]+1, curr[2]+1]) if(parent[curr[0]-2][curr[1]+1] == 0): parent[curr[0]-2][curr[1]+1] = 'UR' if(curr[1]+2 < n): if(visited[curr[0]][curr[1]+2] == False): Q.append([curr[0], curr[1]+2, curr[2]+1]) if(parent[curr[0]][curr[1]+2] == 0): parent[curr[0]][curr[1]+2] = 'R' if(curr[0]+2 < n): if(curr[1]+1 < n): if(visited[curr[0]+2][curr[1]+1] == False): Q.append([curr[0]+2, curr[1]+1, curr[2]+1]) if(parent[curr[0]+2][curr[1]+1] == 0): parent[curr[0]+2][curr[1]+1] = 'LR' if(curr[1]-1 >= 0): if(visited[curr[0]+2][curr[1]-1] == False): Q.append([curr[0]+2, curr[1]-1, curr[2]+1]) if(parent[curr[0]+2][curr[1]-1] == 0): parent[curr[0]+2][curr[1]-1] = 'LL' if(curr[1]-2 >= 0): if(visited[curr[0]][curr[1]-2] == False): Q.append([curr[0], curr[1]-2, curr[2]+1]) if(parent[curr[0]][curr[1]-2] == 0): parent[curr[0]][curr[1]-2] = 'L' if(sol): print(curr[2]) ''' for i in range(len(parent)): for j in range(len(parent[0])): print(parent[i][j], end="\t") print() ''' path = [] while (i_end != i_start or j_end != j_start): parentletter = parent[i_end][j_end] path.append(parentletter) if(parentletter == 'UR'): i_end = i_end+2 j_end = j_end-1 if(parentletter == 'R'): i_end = i_end j_end = j_end-2 if(parentletter == 'LR'): i_end = i_end-2 j_end = j_end-1 if(parentletter == 'LL'): i_end = i_end-2 j_end = j_end+1 if(parentletter == 'L'): i_end = i_end j_end = j_end+2 if(parentletter == 'UL'): i_end = i_end+2 j_end = j_end+1 #print(path) for qw in range(len(path)): print(path[-1-qw], end = " ") else: print('Impossible') # Print the distance along with the sequence of moves. 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)