#include #define F first #define S second #define mp make_pair #define pb push_back #define ll long long #define LEFT(a) ((a)<<1) #define RIGHT(a) (LEFT(a) + 1) #define MID(a,b) ((a+b)>>1) #define MAX(a,b) ((a)>(b)?(a):(b)) #define MIN(a,b) ((a)<(b)?(a):(b)) using namespace std; const int N = 1e5 + 5, MOD = 1e9 + 7; int n; int r1, c1, r2, c2; string s[6] = {"UL", "UR", "R", "LR", "LL", "L"}; int dr[6] = {-2, -2, 0, 2, 2, 0}; int dc[6] = {-1, 1, 2, 1, -1, -2}; int D[205][205], d[205][205]; int Dr[205][205], Dc[205][205]; queue < int > Q1, Q2; int main() { cin>>n>>r1>>c1>>r2>>c2; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) D[i][j] = MOD; D[r1][c1] = 0; Q1.push (r1); Q2.push (c1); while (Q1.size() > 0){ int r = Q1.front(); int c = Q2.front(); Q1.pop(); Q2.pop(); for (int i = 0; i < 6; i++){ int newr = r + dr[i]; int newc = c + dc[i]; if (!(0 <= newr && newr < n && 0 <= newc && newc < n)) continue; if (D[newr][newc] <= D[r][c] + 1) continue; D[newr][newc] = D[r][c] + 1; d[newr][newc] = i; Dr[newr][newc] = r; Dc[newr][newc] = c; Q1.push (newr); Q2.push (newc); } } if (D[r2][c2] == MOD){ cout<<"Impossible\n"; return 0; } int r = r2; int c = c2; vector < int > V; while (r != r1 || c != c1){ V.push_back (d[r][c]); int x = Dr[r][c]; int y = Dc[r][c]; r = x; c = y; } cout<= 0; i--) cout<