#include using namespace std; #define N 303 #define F first #define S second typedef pair ii; typedef pair iii; int n, dist[N][N]; ii ini, fim; iii p[N][N]; int r[]={-2, -2, 0, 2, 2, 0}; int c[]={-1, 1, 2, 1, -1, -2}; string op[]={"UL", "UR", "R", "LR", "LL", "L"}; vector ans; bool valid(int i, int j){ return i>=0 && j>=0 && i q; dist[ini.F][ini.S] = 0; q.push(ini); while(q.size()){ ii foo = q.front(); q.pop(); int x = foo.F, y = foo.S; if(ii(x, y) == fim) { cout << dist[x][y] << endl; return; } for(int i=0; i<6; i++){ int u = x+r[i]; int v = y+c[i]; if(!valid(u, v)) continue; if(dist[u][v] == -1){ dist[u][v] = dist[x][y]+1; p[u][v] = iii(ii(x, y), i); q.push(ii(u, v)); } } } cout << "Impossible\n"; exit(0); } void print(int x, int y){ if(ii(x, y) == ini) return; print(p[x][y].F.F, p[x][y].F.S); ans.push_back(op[p[x][y].S]); } int main(){ scanf("%d", &n); scanf("%d %d", &ini.F, &ini.S); scanf("%d %d", &fim.F, &fim.S); bfs(); print(fim.F, fim.S); for(int i=0; i