//#include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define F first #define S second #define lb lower_bound #define ub upper_bound #define pb push_back #define pf push_front #define ppb pop_back #define mp make_pair #define al 0x3F3F3F3F #define sz(x) x.size() #define all(x) x.begin(), x.end() #define in insert #define ppf pop_front #define endl '\n' #define resize(v) v.resize(unique(all(v)) - v.begin()); #define x1 aza2 #define y1 aza3 typedef unsigned long long ull; typedef long long ll; typedef long double ld; typedef pair pii; typedef pair pll; typedef pair pil; typedef pair < ll, int > pli; typedef pair pdd; typedef pair pid; typedef pair pdi; typedef pair pld; typedef pair pdl; const int mod = (int)1e9 + 7; const int MAX_N = (int)2e5 + 123; const int N = 1e6 + 3; const int INF = al; const ll INFL = 3e18 + 1; const double pi = acos(-1.0); const double eps = 1e-9; const int dx[] = {0, -2, 2, -1, 1, -1, 1}; const int dy[] = {0, 0, 0, -2, -2, 2, 2}; int n, x1, y1, x2, y2, d[201][201], used[201][201]; pii p[201][201]; queue q; vector ans; inline void boost() { ios_base :: sync_with_stdio(NULL); cin.tie(NULL), cout.tie(NULL); } inline void Solve() { boost(); cin >> n >> y1 >> x1 >> y2 >> x2; q.push({x1, y1}); used[x1][y1] = 1; while (sz(q)) { pii v = q.front(); q.pop(); for (int i = 1; i <= 6; i ++) { int x = dx[i] + v.F, y = dy[i] + v.S; if (x >= n || x < 0 || y >= n || y < 0) continue; if (used[x][y]) continue; used[x][y] = 1; d[x][y] = d[v.F][v.S] + 1; p[x][y] = {v.F, v.S}; q.push({x, y}); } } if (!used[x2][y2]) cout << "Impossible", exit(0); while (1) { pii v = p[x2][y2]; for (int i = 1; i <= 6; i ++) { int x = dx[i] + x2, y = dy[i] + y2; if (x == v.F && y == v.S) { if (i == 1) ans.pb("R"); if (i == 2) ans.pb("L"); if (i == 3) ans.pb("LR"); if (i == 4) ans.pb("LL"); if (i == 5) ans.pb("UR"); if (i == 6) ans.pb("UL"); x2 = x, y2 = y; break; } } if (x2 == x1 && y2 == y1) break; } vector res; cout << sz(ans) << endl; for (int i = 0; i < sz(ans); i ++) if (ans[i] == "UL") res.pb(ans[i]); for (int i = 0; i < sz(ans); i ++) if (ans[i] == "UR") res.pb(ans[i]); for (int i = 0; i < sz(ans); i ++) if (ans[i] == "R") res.pb(ans[i]); for (int i = 0; i < sz(ans); i ++) if (ans[i] == "LR") res.pb(ans[i]); for (int i = 0; i < sz(ans); i ++) if (ans[i] == "LL") res.pb(ans[i]); for (int i = 0; i < sz(ans); i ++) if (ans[i] == "L") res.pb(ans[i]); for (int i = 0; i < sz(res); i ++) cout << res[i] << ' '; } int main () { // freopen("differ.in", "r", stdin); // freopen("differ.out", "w", stdout); int tt = 1; while (tt--) { Solve(); } }