#include #define FOR(x, a, b) for (int x = a; x <= b; ++x) #define FOD(x, a, b) for (int x = a; x >= b; --x) #define REP(x, a, b) for (int x = a; x < b; ++x) #define FRSZ(i, a) for(int i=0; i < a.size(); ++i) #define FRIT(it, a) for(it=a.begin(); it!=a.end(); ++it) #define DEBUG(X) { cout << #X << " = " << X << endl; } #define PR(A, n) { cout << #A << " = "; FOR(_, 1, n) cout << A[_] << " "; cout << endl; } #define PR0(A, n) { cout << #A << " = "; REP(_, 0, n) cout << A[_] << " "; cout << endl; } using namespace std; typedef long long LL; typedef pair II; #define fi first #define sc second const int N = 205; const int INF = -1; mapmp; int n, x_start, x_end, y_start, y_end; bool check(int x, int y){ return(x >= 0 && x < n && y >= 0 && y < n); } void BFS(){ queue q; q.push(II(x_start, y_start)); while(!q.empty()){ II u = q.front(); q.pop(); if(mp.find(make_pair(u.fi - 2, u.sc - 1)) == mp.end() && check(u.fi - 2, u.sc - 1)){ q.push(make_pair(u.fi - 2, u.sc - 1)); mp[make_pair(u.fi - 2, u.sc - 1)] = u; } if(mp.find(make_pair(u.fi - 2, u.sc + 1)) == mp.end() && check(u.fi - 2, u.sc + 1)){ q.push(make_pair(u.fi - 2, u.sc + 1)); mp[make_pair(u.fi - 2, u.sc + 1)] = u; } if(mp.find(make_pair(u.fi, u.sc + 2)) == mp.end() && check(u.fi, u.sc + 2)){ q.push(make_pair(u.fi, u.sc + 2)); mp[make_pair(u.fi, u.sc + 2)] = u; } if(mp.find(make_pair(u.fi + 2, u.sc + 1)) == mp.end() && check(u.fi + 2, u.sc + 1)){ q.push(make_pair(u.fi + 2, u.sc + 1)); mp[make_pair(u.fi + 2, u.sc + 1)] = u; } if(mp.find(make_pair(u.fi + 2, u.sc - 1)) == mp.end() && check(u.fi + 2, u.sc - 1)){ q.push(make_pair(u.fi + 2, u.sc - 1)); mp[make_pair(u.fi + 2, u.sc - 1)] = u; } if(mp.find(make_pair(u.fi, u.sc - 2)) == mp.end() && check(u.fi, u.sc - 2)){ q.push(make_pair(u.fi, u.sc - 2)); mp[make_pair(u.fi, u.sc - 2)] = u; } } } int cnt = 0; void Trace(int x, int y){ if(x != x_start || y != y_start){ if(mp[make_pair(x, y)] == make_pair(x - 2, y - 1)){ cnt++;Trace(x - 2, y - 1); cout<<"LR "; } else if(mp[make_pair(x, y)] == make_pair(x - 2, y + 1)){ cnt++;Trace(x - 2, y + 1); cout<<"LL "; } else if(mp[make_pair(x, y)] == make_pair(x, y - 2)){ cnt++;Trace(x, y - 2); cout<<"R "; } else if(mp[make_pair(x, y)] == make_pair(x, y + 2)){ cnt++;Trace(x, y + 2); cout<<"L "; } else if(mp[make_pair(x, y)] == make_pair(x + 2, y - 1)){ cnt++;Trace(x + 2, y - 1); cout<<"UR "; } else if(mp[make_pair(x, y)] == make_pair(x + 2, y + 1)){ cnt++;Trace(x + 2, y + 1); cout<<"UL "; } } else cout<>n>>x_start>>y_start>>x_end>>y_end; BFS(); if(mp.find(II(x_end, y_end)) == mp.end()) cout<<"Impossible"; else Trace(x_end, y_end); return 0; }