#include using namespace std; int dx[6] = {-2,-2,0,2,2,0}, dy[6] = {-1,1,2,1,-1,-2}, tr = 0; string op[6] = {"UL", "UR", "R", "LR", "LL", "L"}; int vis[1010][1010]; map < pair < int, int >, pair < int, int > > pai; string mov[1010][1010]; void print(int i, int j,int i_start, int j_start, int k){ // cout << i << " " << j << endl; if(i == i_start && j == j_start){ cout << k << endl; return; } print(pai[make_pair(i,j)].first, pai[make_pair(i,j)].second, i_start, j_start, k+1); cout << mov[i][j] << " "; } void printShortestPath(int n, int i_start, int j_start, int i_end, int j_end) { int i, j; queue < pair < int, int > > q; q.push(make_pair(i_start, j_start)); vis[i_start][j_start] = 1; while(!q.empty()){ i = q.front().first; j = q.front().second; if(i == i_end && j == j_end){ tr = 1; break; } q.pop(); for(int k = 0;k < 6;k++){ if(i+dx[k] < n && i+dx[k] >= 0 && j+dy[k] < n && j+dy[k] >= 0 && !vis[i+dx[k]][j+dy[k]]){ // cout << i+dx[k] << " " << j+dy[k] << endl; // cout << op[k] << endl; vis[i+dx[k]][j+dy[k]] = 1; q.push(make_pair(i+dx[k], j+dy[k])); pai[make_pair(i+dx[k], j+dy[k])] = make_pair(i,j); mov[i+dx[k]][j+dy[k]] = op[k]; } } } if(tr) print(i_end, j_end, i_start, j_start,0); } int main() { int n; cin >> n; memset(vis, 0, sizeof(vis)); int i_start; int j_start; int i_end; int j_end; cin >> i_start >> j_start >> i_end >> j_end; printShortestPath(n, i_start, j_start, i_end, j_end); if(!tr) cout << "Impossible"; cout << endl; return 0; }