#include using namespace std ; #define pb push_back #define mp make_pair #define infile() freopen("large.in","r",stdin); #define output() freopen("output.txt","w",stdout); #define ll long long #define sc(t); scanf("%d",&t); #define scl(t); scanf("%lld",&t); #define sc2(n,m); scanf("%d%d",&n,&m); #define scl2(n,m); scanf("%lld%lld",&n,&m); #define debug(); printf("tushar\n"); #define N 100005 #define mod 1000000007 #define printi(n) printf("%d",n); #define inf ((1<<29)-1) #define linf ((1LL<<60)-1) const double eps = 1e-9; set < ll > s ; set < ll > :: iterator it ; vector < ll > v ; int n,m,q ; int a[N] ; int stx,sty,enx,eny; int vis[201][201]={0}; int dp[201][201] = {0}; int valid(int x , int y) { if(x>=0&&x<=n-1&&y>=0&&y<=n-1) return 1; return 0; } int bfs(int stx , int sty ) { queue < pair < int , pair < int , pair < int , int > > > > q ; q.push(mp(stx,mp(sty,mp(0,0)))) ; while(!q.empty()) { int x = q.front().first ; int y = q.front().second.first ; int steps = q.front().second.second.second ; int tmp = q.front().second.second.first ; //printf("x = %d y = %d steps = %d dp[] = %d\n",x,y,steps,dp[x][y]); //printf("x = %d y = %d steps = %d tmp = %d\n",x,y,steps,tmp); if(steps >= dp[x][y])// ||(x==enx&&y==eny)) { q.pop(); continue ; } // if(steps == dp[x][y]) // { // if(tmp > vis[x][y]) // { // q.pop(); // continue; // } // } vis[x][y] = q.front().second.second.first ; dp[x][y] = steps; if(x==enx&&y==eny) break; // printf("x = %d y = %d\n",x,y); q.pop(); int xx,yy ; xx = x-2 ; yy = y-1 ; if(valid(xx,yy)) { q.push(mp(xx,mp(yy,mp(1,steps+1)))); } xx=x-2; yy=y+1; if(valid(xx,yy)) { q.push(mp(xx,mp(yy,mp(2,steps+1)))); } xx=x; yy=y+2; if(valid(xx,yy)) { q.push((mp(xx,mp(yy,mp(3,steps+1))))); } xx=x+2; yy=y+1; if(valid(xx,yy)) { q.push((mp(xx,mp(yy,mp(4,steps+1))))); } xx=x+2; yy=y-1; if(valid(xx,yy)) { q.push((mp(xx,mp(yy,mp(5,steps+1))))); } xx=x; yy=y-2; if(valid(xx,yy)) { q.push((mp(xx,mp(yy,mp(6,steps+1))))); } } if(vis[enx][eny]==0) return 0 ; stack < int > st ; vector v; int x = enx; int y = eny; // for(int i = 0 ; i < n ; i++ ) // { // for(int j = 0 ; j < n; j++ ) // printf("%3d",vis[i][j]); // printf("\n"); // } while(1) { //printf("x = %d y = %d\n",x,y); if(x == stx && y == sty) break ; st.push(vis[x][y]) ; v.pb(vis[x][y]); if(vis[x][y]==1) { x+=2; y+=1; } else if(vis[x][y]==2) { x+=2; y-=1; } else if(vis[x][y]==3) { y-=2; } else if(vis[x][y]==4) { x-=2; y-=1; } else if(vis[x][y]==5) { x-=2; y+=1; } else { y+=2; } } //sort(v.begin(),v.end()); printf("%d\n",st.size()); int i = 0 ; while(!st.empty()) { int x = st.top(); st.pop(); if(x == 1) printf("UL ") ; else if(x==2) printf("UR "); else if(x==3) printf("R "); else if(x==4) printf("LR "); else if(x==5) printf("LL "); else printf("L "); } return 1 ; } int main() { int i , j , t ; sc(n) ; scanf("%d %d %d %d",&stx,&sty,&enx,&eny); if(stx == enx && sty == eny) { printf("0\n"); return 0; } for(i=0;i<=n;i++) for(j=0;j<=n;j++) dp[i][j]=inf; int x = bfs(stx,sty) ; if(x == 0) { printf("Impossible\n"); } return 0 ; }