#include using namespace std; int n, d[205][205], fa[205][205], fb[205][205], s[205][205], sa, sb, ea, eb, ta, tb, tc; string st[] = {"UL", "UR", "R", "LR", "LL", "L"}; queue< pair< int, int > > q; int dx[] = {-2, -2, 0, 2, 2, 0}; int dy[] = {-1, 1, 2, 1, -1, -2}; vector< string > v; int main() { scanf("%d%d%d%d%d", &n, &sa, &sb, &ea, &eb); for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) d[i][j] = INT_MAX / 2; swap(sa, ea); swap(sb, eb); d[sa][sb] = 0; q.push(make_pair(sa, sb)); while (!q.empty()) { ta = q.front().first; tb = q.front().second; q.pop(); tc = d[ta][tb] + 1; for (int i = 0; i < 6; i++) { ta -= dx[i]; tb -= dy[i]; if (d[ta][tb] > tc || (d[ta][tb] == tc && s[ta][tb] > i)) { if (d[ta][tb] > tc) { d[ta][tb] = tc; q.push(make_pair(ta, tb)); } s[ta][tb] = i; fa[ta][tb] = ta + dx[i]; fb[ta][tb] = tb + dy[i]; } ta += dx[i]; tb += dy[i]; } } for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) if (d[i][j] == INT_MAX / 2) d[i][j] = s[i][j] = -1; // for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) printf("%2d%c", s[i][j], j == n - 1 ? '\n' : ' '); // for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) printf("%2d%c", d[i][j], j == n - 1 ? '\n' : ' '); if (d[ea][eb] >= 0) { printf("%d\n", d[ea][eb]); while (ea != sa || eb != sb) { v.push_back(st[s[ea][eb]]); ta = fa[ea][eb]; tb = fb[ea][eb]; ea = ta; eb = tb; } reverse(v.begin(), v.end()); for (int i = v.size() - 1; i >= 0; i--) printf("%s%c", v[i].c_str(), i ? ' ' : '\n'); } else printf("Impossible\n"); return 0; }