#include using namespace std; struct data{ int xn, yn,kn; }; int n,xa,ya,xe,ye; int dx[6]={-2,-2,0,2,2,0}; int dy[6]={-1,1,2,1,-1,-2}; string kode[6]={"UL","UR","R","LR","LL","L"}; data memo[205][205]; bool vis[205][205]; int bfs(int x, int y) { queue xx, yy,jj; xx.push(x); yy.push(y); jj.push(0); vis[x][y]=1; while(!xx.empty()) { int tmpx=xx.front(); int tmpy=yy.front(); int tmpj=jj.front(); xx.pop(); yy.pop(); jj.pop(); for(int i=0;i<6;i++) { int tmppx=tmpx+dx[i]; int tmppy=tmpy+dy[i]; if(tmppx>=n || tmppx<0 || tmppy>=n || tmppy<0 || vis[tmppx][tmppy]) continue; vis[tmppx][tmppy]=1; data ret; ret.xn=tmpx; ret.yn=tmpy; ret.kn=i; memo[tmppx][tmppy]=ret; if(tmppx==xe && tmppy==ye) return tmpj+1; xx.push(tmppx); yy.push(tmppy); jj.push(tmpj+1); } } return -1; } void dfs(int x,int y) { if(x==xa && y==ya) return; dfs(memo[x][y].xn,memo[x][y].yn); cout << kode[memo[x][y].kn]; if(memo[x][y].xn==xe && memo[x][y].yn==ye) return; else printf(" "); return; } int main() { memset(vis,0,sizeof(vis)); scanf("%d",&n); scanf("%d%d%d%d",&xa,&ya,&xe,&ye);//row x kolom y int sp=bfs(xa,ya); if(sp==-1) printf("Impossible\n"); else { printf("%d\n",sp); dfs(xe,ye); printf("\n"); } return 0; }