#include #define FOR(a,b,c) for(int a=(b),_for=(c);a<_for;++a) #define ll long long #define vi vector < int > #define pii pair < int, int > #define x first #define y second #define mp make_pair #define pb push_back #define y1 asdfsdf using namespace std; const int MAXN = 200; const int dx[] = {-2, -2, 0 , +2, +2, 0 }; const int dy[] = {-1, +1, +2, +1, -1, -2}; const string out[] = {"UL", "UR", "R", "LR", "LL", "L"}; int dist[MAXN+5][MAXN+5]; pii Prev[MAXN+5][MAXN+5]; int dir[MAXN+5][MAXN+5]; int n; int x1,x2,y1,y2; bool ok(int x,int y){ if (x<0 || y<0 || x>=n || y>=n || dist[x][y]!=-1) return 0; return 1; } int main(){ scanf ("%d",&n); scanf ("%d%d%d%d",&x1,&y1,&x2,&y2); queue < pii > q; q.push({x1,y1}); FOR(i,0,n) FOR(j,0,n) dist[i][j]=-1; dist[x1][y1]=0; while(!q.empty()){ int x=q.front().x; int y=q.front().y; q.pop(); FOR(i,0,6){ int nx = x+dx[i],ny=y+dy[i]; if (ok(nx,ny)){ q.push({nx,ny}); dist[nx][ny]=dist[x][y]+1; Prev[nx][ny]={x,y}; dir[nx][ny]=i; } } } if (dist[x2][y2]==-1){ puts ("Impossible"); return 0; } printf ("%d\n",dist[x2][y2]); vector < int > v; int x=x2,y=y2; while(x!=x1 || y!=y1){ v.pb(dir[x][y]); int nx = Prev[x][y].x, ny=Prev[x][y].y; x=nx,y=ny; } for (int i=(int)v.size()-1;i>=0;--i) cout << out[v[i]] << " "; return 0; }