#include using namespace std; #define MOD 1000000007 #define pb(x) push_back(x) #define mp(x,y) make_pair(x,y) #define FF first #define SS second #define s(n) scanf("%d",&n) #define sl(n) scanf("%lld",&n) #define sf(n) scanf("%lf",&n) #define ss(n) scanf("%s",n) #define sc(n) {char temp[4]; ss(temp); n=temp[0];} #define INF (int)1e9 #define LINF (long long)1e18 #define EPS 1e-9 #define maX(a,b) ((a)>(b)?(a):(b)) #define miN(a,b) ((a)<(b)?(a):(b)) #define abS(x) ((x)<0?-(x):(x)) #define rP(n) (sieve[n>>6]|=(1<<((n>>1)&31))) #define gP(n) sieve[n>>6]&(1<<((n>>1)&31)) typedef long long ll; typedef unsigned long long LL; typedef pair PII; typedef pair PLL; typedef pair TRI; typedef vector VI; typedef vector VL; typedef vector vl; typedef vector VII; typedef vector VT; int dp[1000][1000]; // rec(0,sx,sy,ex,ey,n,moves,name); // int rec(int step,int x,int y,int ex,int ey) // { // for(int i=0;i=0 && xc =0 && yc > moves; vector name; vector ans; queue< pair > q; vector< vector > prev; queue q2; moves.clear(); name.clear(); ll n ; sl(n); ll sx,sy,ex,ey; cin >> sx >> sy >> ex >> ey; if(sx==ex && sy==ey) { cout << "0\n"; cout << endl; // return 0; } for(int i=0;i<=n;i++) { for(int j=0;j<=n;j++) dp[i][j] = -1; } prev.resize(n+1); for(int i=0;i<=n;i++) { prev[i].resize(n+1); } // UL, UR, R, LR, LL, L moves.push_back(make_pair(-2,-1)); name.pb("UL"); moves.push_back(make_pair(-2,1)); name.pb("UR"); moves.push_back(make_pair(0,2)); name.pb("R"); moves.push_back(make_pair(2,1)); name.pb("LR"); moves.push_back(make_pair(2,-1)); name.pb("LL"); moves.push_back(make_pair(0,-2)); name.pb("L"); q.push(make_pair(sx,sy)); q2.push(0); dp[sx][sy] = 0; while(!q.empty()) { pair top = q.front(); int dis = q2.front(); q2.pop(); q.pop(); // cout << "x= " << top.first << " y=" << top.second << endl; for(int i=0;i stk; prev[xc][yc] = i; int prevx = ex; int prevy = ey; while(!(prevx==sx && prevy==sy)) { stk.push(prev[prevx][prevy]); int ind = prev[prevx][prevy]; // cout << name[prev[prevx][prevy]] << endl; prevx = prevx - moves[ind].first; prevy = prevy - moves[ind].second; // cout << prevx << " " << prevy << endl; } while(!stk.empty()) { cout << name[stk.top()] << " "; stk.pop(); } cout << endl; return 0; } if(xc >=0 && xc =0 && yc