#include #define ff(i,a,b) for(int i=(a), _b=(b); i<=_b; ++i) #define gg(i,a,b) for(int i=(a), _b=(b); i>=_b; --i) #define REP(i,b) for(int i=(0), _b=(b); i< _b; ++i) #define endl '\n' #define long long long #define ALL(x) (x).begin(), (x).end() #define Love(a) {cerr << #a << " = " << a << endl;} #define _ << "," << #define BIT(i, x) (((x)>>(i))&1) #define X first #define Y second #define NAME "RedKnights" using namespace std; const int N = 207; const int dx[] = {-2, -2, 0, 2, 2, 0}, dy[] = {-1, 1, 2, 1, -1, -2}; const string str[] = {"UL", "UR", "R", "LR", "LL", "L"}; typedef pair ii; struct hihi { int x, y; string s; }save[N][N]; int n, sx, sy, tx, ty, vis[N][N]; void Enter() { cin >> n; cin >> sx >> sy >> tx >> ty; } bool Inside(int x, int y) { return x >= 0 && x < n && y >= 0 && y < n; } void BFS() { queue Q; Q.push({sx, sy}); vis[sx][sy] = 1; while (Q.size()) { int x = Q.front().X, y = Q.front().Y; Q.pop(); REP(z, 6) { int u = dx[z] + x, v = dy[z] + y; if (Inside(u, v) && !vis[u][v]) { vis[u][v] = vis[x][y] + 1; Q.push({u, v}); save[u][v] = {x, y, str[z]}; } } } } void Trace() { if (!vis[tx][ty]) {cout << "Impossible"; return;} vector ans; int x = tx, y = ty; while (x != sx || y != sy) { hihi tmp = save[x][y]; ans.push_back(tmp.s); x = tmp.x; y = tmp.y; } cout << ans.size() << endl; gg(i, ans.size()-1, 0) cout << ans[i] << ' '; } void Process() { BFS(); Trace(); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); //freopen(NAME".inp", "r", stdin); //freopen(NAME".out", "w", stdout); Enter(); Process(); return 0; }