#include #include #include #include using namespace std; #define sz(x) (int)(x.size()) #define fi(a,b) for(int i=a;i pii; ////////////////////// int const N = 1e3 + 41; int const INF = 1e9 + 41; vector ans; int d[N][N], fx[N][N], fy[N][N]; string by[N][N]; int n, sy, sx, ey, ex; int dx[6] = {-1, 1, 2, 1, -1, -2}; int dy[6] = {-2, -2, 0, 2, 2, 0}; string s[6] = {"UL", "UR", "R", "LR", "LL", "L"}; bool inside(int y, int x){ if(x < 0 || x >= n) return 0; if(y < 0 || y >= n) return 0; return 1; } void solve(){ fi(0, n) fj(0, n) d[i][j] = INF; d[sy][sx] = 0; deque deq; deq.pb(mp(sy, sx)); while(sz(deq)){ pii c = deq.front(); deq.pop_front(); int y = c.first; int x = c.second; fi(0, 6){ int ny = y + dy[i]; int nx = x + dx[i]; if(!inside(ny, nx)) continue; if(d[ny][nx] > d[y][x] + 1){ d[ny][nx] = d[y][x] + 1; fx[ny][nx] = x; fy[ny][nx] = y; by[ny][nx] = s[i]; deq.pb(mp(ny, nx)); } } } if(d[ey][ex] == INF){ printf("Impossible\n"); exit(0); }else{ while(1){ if(ey == sy && ex == sx) break; ans.pb(by[ey][ex]); int ny = fy[ey][ex]; int nx = fx[ey][ex]; ey = ny; ex = nx; } } reverse(ans.begin(), ans.end()); } int main(){ #ifdef _DEBUG freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #endif scanf("%d",&n); scanf("%d %d %d %d",&sy,&sx,&ey,&ex); solve(); printf("%d\n",sz(ans)); fi(0, sz(ans)) printf("%s ",ans[i].c_str()); return 0; }