#include #define ll long long #define sz size() #define all(xx) xx.begin(),xx.end() #define pb push_back #define in insert #define er erase #define x Clarion #define y Harbour #define x1 Pascal #define y1 Java #define x2 Php #define y2 Pyton #define x3 Ruby #define y3 Cpp #define x4 Delphi #define y4 Perl #define x5 C# #define y5 JavaScript #define S second #define F first #define to_be continue #define mp make_pair #define stop exit (0) #define Yes cout<<"Yes" #define No cout<<"No" #define YES cout<<"YES" #define NO cout<<"NO" #define speed ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0) #define input freopen (".in", "r", stdin) #define output freopen (".out", "w", stdout) //#define int ll using namespace std; const int SS = 5e2 + 123; const int N = 1e5 + 123; const int NN = 1e6 + 123; const int M = 1e7 + 123; const int MM = 1e8 + 123; const int inf = 1e9 + 123; const ll INF = 1e18 + 123; const ll MAXN = 1e10 + 123; const ll MOD = 1e9 + 123; const ll mod = 555557; const double pi = acos (-1.0); vector pr; pair > p[301][301]; queue > q; ll n, x1, x2, y1, y2, u[301][301], d[301][301]; int main () { speed; cin >> n >> x1 >> y1 >> x2 >> y2; for (ll i = 0; i < n; i ++) for (ll j = 0; j < n; j ++) d[i][j] = inf; q.push (mp (x1, y1)); d[x1][y1] = 0; u[x1][y1] = 1; while (q.sz) { ll v1 = q.front ().F; ll v2 = q.front ().S; q.pop (); if (v2 - 1 >= 0 && v1 - 2 >= 0 && !u[v1 - 2][v2 - 1]) { u[v1 - 2][v2 - 1] = 1; d[v1 - 2][v2 - 1] = d[v1][v2] + 1; p[v1 - 2][v2 - 1] = mp ("UL", mp (v1, v2)); q.push (mp (v1 - 2, v2 - 1)); } if (v2 + 1 < n && v1 - 2 >= 0 && !u[v1 - 2][v2 + 1]) { u[v1 - 2][v2 + 1] = 1; d[v1 - 2][v2 + 1] = d[v1][v2] + 1; p[v1 - 2][v2 + 1] = mp ("UR", mp (v1, v2)); q.push (mp (v1 - 2, v2 + 1)); } if (v2 + 2 < n && !u[v1][v2 + 2]) { u[v1][v2 + 2] = 1; d[v1][v2 + 2] = d[v1][v2] + 1; p[v1][v2 + 2] = mp ("R", mp (v1, v2)); q.push (mp (v1, v2 + 2)); } if (v2 + 1 < n && v1 + 2 < n && !u[v1 + 2][v2 + 1]) { u[v1 + 2][v2 + 1] = 1; d[v1 + 2][v2 + 1] = d[v1][v2] + 1; p[v1 + 2][v2 + 1] = mp ("LR", mp (v1, v2)); q.push (mp (v1 + 2, v2 + 1)); } if (v2 - 1 >= 0 && v1 + 2 < n && !u[v1 + 2][v2 - 1]) { u[v1 + 2][v2 - 1] = 1; d[v1 + 2][v2 - 1] = d[v1][v2] + 1; p[v1 + 2][v2 - 1] = mp ("LL", mp (v1, v2)); q.push (mp (v1 + 2, v2 - 1)); } if (v2 - 2 >= 0 && !u[v1][v2 - 2]) { u[v1][v2 - 2] = 1; d[v1][v2 - 2] = d[v1][v2] + 1; p[v1][v2 - 2] = mp ("L", mp (v1, v2)); q.push (mp (v1, v2 - 2)); } } if (d[x2][y2] == inf) cout << "Impossible", stop; cout << d[x2][y2] << endl; ll i = x2, cnt = 0, ii; ll j = y2, jj; while (1) { if ((i == x1 && j == y1)) break; pr.pb (p[i][j].F); ii = p[i][j].S.F; jj = p[i][j].S.S; i = ii; j = jj; cnt ++; } reverse (all (pr)); for (auto kk : pr) cout << kk << " "; } //Coded by A....