#include using namespace std; typedef long long ll; typedef double T; typedef vector VT; typedef vector VVT; typedef vector VI; typedef vector VVI; typedef pair PI; typedef vector VPI; const ll MOD = 1e9 + 7; const double EPS = 1e-10; int main() { int n; cin >> n; int sx, sy, fx, fy; cin >> sx >> sy >> fx >> fy; queue q; map prev; map prevdir; PI start = make_pair(sx, sy); prev[start] = start; q.push(start); while (!q.empty()) { PI cur = q.front(); q.pop(); if (cur.first < 0 || cur.first >= n || cur.second < 0 || cur.second >= n) continue; if (cur.first == fx && cur.second == fy) break; int dx [6] = {-2, -2, 0, 2, 2, 0}; int dy [6] = {-1, 1, 2, 1, -1, -2}; string dir [6] = {"UL", "UR", "R", "LR", "LL", "L"}; for (int i = 0; i < 6; ++i) { PI next = make_pair(cur.first + dx[i], cur.second + dy[i]); if (prev.find(next) == prev.end()) { q.push(next); prev[next] = cur; prevdir[next] = dir[i]; } } } PI fin = make_pair(fx, fy); if (prev.find(fin) == prev.end()) { cout << "Impossible\n"; return 0; } int k = 0; vector dirs; while (fin != start) { ++k; dirs.push_back(prevdir[fin]); fin = prev[fin]; } cout << k << "\n"; reverse(dirs.begin(), dirs.end()); for (int i = 0; i < k; ++i) { if (i) cout << " "; cout << dirs[i]; } cout << "\n"; }