#include #define FAST_IO ios_base::sync_with_stdio(0); \ cin.tie(0); \ cout.tie(0) #define pb push_back #define fi first #define se second #define mp make_pair #define all(_v) _v.begin(), _v.end() #define sz(_v) (int) _v.size() #define FIND(_obj, _val) (_obj.find(_val) != _obj.end()) #define RESET(_a, _v) fill_n(_a,sizeof(_a)/sizeof(_a[0]),_v) #define REP(_i, _n) for (int _i = 0; _i < (int) _n; _i++) #define FOR(_i, _a, _b) for (int _i = (int) _a; _i <= (int) _b; _i++) #define FORD(_i, _a, _b) for (int _i = (int) _a; _i >= (int) _b; _i--) #define FORIT(_it, _obj) for (auto _it = _obj.begin(); _it != _obj.end(); _it++) // DEBUG UTIL #define DEBUG(x) cerr << "> " << #x << " = " << x << endl using namespace std; using ll = long long; using pii = pair; using pll = pair; using pdd = pair; using vi = vector; using vii = vector; using vs = vector; const int DX[] = {0, -1, 0, 1}; const int DY[] = {-1, 0, 1, 0}; const double PI = acos(-1.0); const double EPS = 1e-9; const int MOD = 1e9 + 7; const int INF = 1e9; const ll INFLL = 4e18; const int MAX = 200; int N, r1, c1, r2, c2; int DR[] = {-2, -2, 0, 2, 2, 0}; int DC[] = {-1, 1, 2, 1, -1, -2}; string dir[] = {"UL", "UR", "R", "LR", "LL", "L"}; pii dp[MAX+5][MAX+5]; void read() { cin >> N >> r1 >> c1 >> r2 >> c2; } pii solve(int r1, int c1) { if (r1 < 0 || c1 < 0 || r1 >= N || c1 >= N) return {INF, -1}; if (r1 == r2 && c1 == c2) return {0, -1}; pii &ret = dp[r1][c1]; if (ret.fi != -1) return ret; ret = {INF, -1}; REP(i,6) { int dr = r1 + DR[i]; int dc = c1 + DC[i]; if (solve(dr, dc).fi + 1 < ret.fi) { ret = {solve(dr, dc).fi + 1, i}; } } // cerr << "r1: " << r1 << " c1: " << c1 << " -- " << ret.fi << " -- " << ret.se << "\n"; return ret; } void solve() { // REP(i,6) cerr << dir[i] << " "; // cerr << "\n"; memset(dp, -1, sizeof dp); if (solve(r1, c1).fi == INF) { cout << "Impossible\n"; return; } cout << solve(r1, c1).fi << "\n"; vector steps; while (r1 != r2 || c1 != c2) { steps.pb(dir[dp[r1][c1].se]); int tr = r1 + DR[dp[r1][c1].se], tc = c1 + DC[dp[r1][c1].se]; r1 = tr; c1 = tc; } REP(i,sz(steps)) cout << steps[i] << (i+1 == sz(steps) ? "\n" : " "); } int main() { // FAST_IO; int TC = 1; while (TC--) { read(); solve(); } }