#include using namespace std; #define rep(i,a,n) for (int i=a;i=a;i--) #define pb push_back #define mp make_pair #define all(x) (x).begin(),(x).end() #define fi first #define se second #define SZ(x) ((int)(x).size()) typedef vector VI; typedef long long ll; typedef pair PII; const ll mod=1000000000; ll powmod(ll a,ll b) {ll res=1;a%=mod; assert(b>=0); for(;b;b>>=1){if(b&1)res=res*a%mod;a=a*a%mod;}return res;} ll gcd(ll a,ll b) { return b?gcd(b,a%b):a;} // head int dx[]={-2,-2,0,2,2,0},dy[]={-1,1,2,1,-1,-2}; string dir[]={"UL","UR","R","LR","LL","L"}; int n,sx,sy,ex,ey,dis[400][400]; queue q; vector pt[400][400]; int main() { scanf("%d",&n); scanf("%d%d%d%d",&sx,&sy,&ex,&ey); memset(dis,0x20,sizeof(dis)); q.push(mp(sx,sy)); dis[sx][sy]=0; while (!q.empty()) { int u=q.front().fi,v=q.front().se; q.pop(); rep(it,0,6) { int nu=u+dx[it],nv=v+dy[it]; if (nu>=0&&nu=0&&nvdis[u][v]+1) { dis[nu][nv]=dis[u][v]+1; pt[nu][nv]=pt[u][v]; pt[nu][nv].pb(dir[it]); q.push(mp(nu,nv)); } } } if (dis[ex][ey]<=100000) { printf("%d\n",dis[ex][ey]); for (auto p:pt[ex][ey]) printf("%s ",p.c_str()); puts(""); } else puts("Impossible"); }