#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define INF_LL (ll)1e18 #define INF (int)1e9 #define REP(i, n) for(int i = 0;i < (n);i++) #define FOR(i, a, b) for(int i = (a);i < (b);i++) #define all(x) x.begin(),x.end() using ll = long long; using PII = pair; const double eps = 1e-10; templateinline void chmin(A &a, B b){if(a > b) a = b;} templateinline void chmax(A &a, B b){if(a < b) a = b;} #define fs first #define sc second int n; int x1, Y1, x2, y2; int d[210][210]; int dx[6] = {-1, 1, 2, 1, -1, -2}; int dy[6] = {-2, -2, 0, 2, 2, 0}; string ds[6] = {"UL", "UR", "R", "LR", "LL", "L"}; bool cmp(string s, string s2){ int i1, i2; REP(i, 6){ if(s == ds[i]) i1 = i; if(s2 == ds[i]) i2 = i; } return i1> n; cin >> Y1 >> x1 >> y2 >> x2; REP(i, 210) REP(j, 210) d[i][j] = INF; d[Y1][x1] = 0; priority_queue, greater > pq; pq.push({0, ptoi(Y1, x1)}); while(pq.size()){ int dd = pq.top().fs; PII p = itop(pq.top().sc); pq.pop(); REP(i, 6){ int xx = dx[i]+p.sc, yy = dy[i]+p.fs; if(xx < 0 || n <= xx || yy < 0 || n <= yy) continue; if(d[yy][xx] > dd+1){ d[yy][xx] = dd+1; pq.push({d[yy][xx], ptoi(yy, xx)}); } } } if(d[y2][x2] == INF){ cout << "Impossible" << endl; return 0; }else{ vector res; int y = y2, x = x2; while(y != Y1 || x != x1){ REP(i, 6){ int yy = y-dy[i], xx = x-dx[i]; if(xx < 0 || n <= xx || yy < 0 || n <= yy) continue; if(d[yy][xx] == d[y][x]-1){ res.push_back(ds[i]); y = yy; x = xx; break; } } } sort(all(res), cmp); cout << res.size() << endl; REP(i, res.size()) cout << res[i] << " "; cout << endl; } }