#include using namespace std; #define MOD 1000000007 #define ll long long int #define ld long double #define pb push_back #define mkp make_pair #define pii pair #define pll pair #define sci(x) scanf("%d", &x) #define scl(x) scanf("%lld", &x) #define fi first #define sc second #define deb 0 int M[300][300]; int xr[] = {-2, -2, 0, 2, 2, 0}; int xc[] = {-1, 1, 2, 1, -1, -2}; vector v[100001]; string str[] = {"UL", "UR", "R", "LR", "LL", "L"}; int prio(string s) { for (int i = 0; i < 6; ++i) if (str[i] == s) return i; return 0; } void find(int sx, int sy, int dx, int dy, int n) { int x, y; queue q; q.push(mkp(sx, sy)); M[sx][sy] = 1; v[1].pb(mkp(sx, sy)); while (!q.empty()) { x = q.front().fi; y = q.front().sc; q.pop(); for (int i = 0; i < 6; ++i) { int a = x + xr[i]; int b = y + xc[i]; if (a >= 0 && a < n && b >= 0 && b < n && M[a][b] == 0) { M[a][b] = 1 + M[x][y]; v[M[a][b]].pb(mkp(a, b)); q.push(mkp(a, b)); } } } if (!M[dx][dy]) { cout << "Impossible" << endl; return; } cout << M[dx][dy] - 1 << endl; int dist = M[dx][dy]; while (dist != 1) { int ndist = dist - 1; int p = MOD; string move = ""; //cout << "dx = " << dx << " dy = " << dy << endl; int a = dx; int b = dy; for (auto it: v[ndist]) { int x = it.fi; int y = it.sc; string s = ""; int v = (abs(x-a) == 2 && abs(y-b) == 1) || (abs(x-a) == 0 && abs(y-b) == 2); if (!v) continue; if (x < a) s += "U"; if (x > a) s += "L"; if (y < b) s += "L"; if (y > b) s += "R"; int q = prio(s); if (q < p) { p = q; dx = x; dy = y; move = s; } } //cout << "nx = " << dx << " ny = " << dy << endl; cout << move << " "; dist -= 1; } cout << endl; } int main() { ios_base::sync_with_stdio(false);cout.tie(0);cin.tie(0); int n, sx, sy, dx, dy; cin >> n >> sx >> sy >> dx >> dy; find(dx, dy, sx, sy, n); return 0; }