#include #define fi first #define se second #define fio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0) using namespace std; typedef long long int lli; typedef pair plli; const int MM = 1200000; lli m,n,k,p1,p2,p3,p,f,a[MM]; string s,s1,s2; map dix; map prex; map vis; plli add(plli x1, plli x2) { return {x1.fi + x2.fi, x1.se + x2.se}; } deque q; bool valid(plli x) { return (x.fi < n && x.fi >= 0) && (x.se < n && x.se >= 0); } void upd(plli u, lli dis, lli from) { if(!valid(u)) return; if(!vis[u]) { vis[u] = 1; q.push_back(u); dix[u] = dis, prex[u] = from; return; } } vector dxx = {{-2,-1}, {-2,1}, {0,2}, {2,1}, {2,-1}, {0,-2}}; std::vector vs = {"UL", "UR", "R", "LR", "LL", "L"}; void release(plli x) { lli dx = dix[x]+1; for(int i=0; i<6; i++) upd(add(x,dxx[i]), dx, i); } int main(){fio; cin >> n; plli st, en; cin >> st.fi >> st.se >> en.fi >> en.se; vis[st] = 1; q.push_back(st); while(!q.empty()) { plli x = q.front(); q.pop_front(); release(x); if(vis[en]) break; } if(!vis[en]) { cout << "Impossible"; return 0; } cout << dix[en] << endl; plli cur = en; vector vx; while(cur != st) { vx.push_back(prex[cur]); cur = add(cur, {-dxx[prex[cur]].fi, -dxx[prex[cur]].se}); } reverse(vx.begin(), vx.end()); for(lli u : vx) cout << vs[u] << " "; return 0; }