#include #define si(x) scanf("%d", &x) #define sf(x) scanf("%f", &x) #define sc(x) scanf("%c", &x) #define ss(x) scanf("%s", x) #define sll(x) scanf("%I64d", &x) #define sld(x) scanf("%lf", &x) #define pri(x) printf("%d", x) #define prf(x) printf("%f", x) #define prc(x) printf("%c", x) #define prs(x) printf("%s", x) #define prll(x) printf("%I64d", x) #define prld(x) printf("%lf", x) #define ln printf("\n") #define sp printf(" ") #define itn int #define ll long long #define vi vector #define vl vector #define vvi vector #define vvl vector #define vpii vector #define pii pair #define pll pair #define pil pair #define pli pair #define all(a) (a).begin, (a).end() #define FR first #define SC second #define mp make_pair #define pb push_back #define sz(x) (x).size() #define rep(i, a, n) for(int i = a; i < n; i ++) #define per(i, a, n) for(int i = n - 1; i >= a; i --) #define mod 1000000007 #define INF ((1ll << 31) - 1) using namespace std; const int maxn = 3e2 + 5; int n; bool used[maxn][maxn]; pair parent[maxn][maxn]; int i2, j2; void BFS(int i1, int j1) { queue > q; q.push(make_pair(i1, j1)); used[i1][j1] = 1; int i3, j3; while(!q.empty()) { i1 = q.front().first; j1 = q.front().second; q.pop(); i3 = i1 - 2; j3 = j1 - 1; if(i3 >= 0 && i3 < n && j3 >= 0 && j3 < n && used[i3][j3] == 0) { parent[i3][j3] = make_pair(i1, j1); used[i3][j3] = 1; q.push(make_pair(i3, j3)); } i3 = i1 - 2; j3 = j1 + 1; if(i3 >= 0 && i3 < n && j3 >= 0 && j3 < n && used[i3][j3] == 0) { parent[i3][j3] = make_pair(i1, j1); used[i3][j3] = 1; q.push(make_pair(i3, j3)); } i3 = i1; j3 = j1 + 2; if(i3 >= 0 && i3 < n && j3 >= 0 && j3 < n && used[i3][j3] == 0) { parent[i3][j3] = make_pair(i1, j1); used[i3][j3] = 1; q.push(make_pair(i3, j3)); } i3 = i1 + 2; j3 = j1 + 1; if(i3 >= 0 && i3 < n && j3 >= 0 && j3 < n && used[i3][j3] == 0) { parent[i3][j3] = make_pair(i1, j1); used[i3][j3] = 1; q.push(make_pair(i3, j3)); } i3 = i1 + 2; j3 = j1 - 1; if(i3 >= 0 && i3 < n && j3 >= 0 && j3 < n && used[i3][j3] == 0) { parent[i3][j3] = make_pair(i1, j1); used[i3][j3] = 1; q.push(make_pair(i3, j3)); } i3 = i1; j3 = j1 - 2; if(i3 >= 0 && i3 < n && j3 >= 0 && j3 < n && used[i3][j3] == 0) { parent[i3][j3] = make_pair(i1, j1); used[i3][j3] = 1; q.push(make_pair(i3, j3)); } } } int main() { si(n); int i1, j1; si(i1); si(j1); si(i2); si(j2); if(i1 == i2 && j1 == j2) { pri(0); return 0; } BFS(i1, j1); if(used[i2][j2] == false) { prs("Impossible"); return 0; } stack > q; int k = 0; int i3 = i2, j3 = j2; // q.push(mp(i2, j2)); while(!(i2 == i1 && j2 == j1)) { q.push(mp(i3, j3)); // cout << i3 << " " << j3 << endl; i3 = parent[i2][j2].first; j3 = parent[i2][j2].second; //q.push(mp(i3, j3)); k ++; i2 = i3; j2 = j3; } cout << k << endl; //q.pop(); while(!q.empty()) { i2 = q.top().first; j2 = q.top().second; q.pop(); if(i2 == i1 - 2 && j2 == j1 - 1) cout << "UL "; if(i2 == i1 - 2 && j2 == j1 + 1) cout << "UR "; if(i2 == i1 && j2 == j1 + 2) cout << "R "; if(i2 == i1 + 2 && j2 == j1 + 1) cout << "LR "; if(i2 == i1 + 2 && j2 == j1 - 1) cout << "LL "; if(i2 == i1 && j2 == j1 - 2) cout << "L "; // cout << i1 << " " << j1 << " -> " << i2 << " " << j2 << endl; i1 = i2; j1 = j2; } // cout << parent[2][2].first << " " << parent[2][2].second << endl; // cout << parent[2][4].first << " " << parent[2][4].second << endl; // cout << parent[4][3].first << " " << parent[4][3].second << endl; return 0; }