#include using namespace std; typedef long long ll; typedef pair ii; typedef vector vi; typedef vector vii; typedef vector Matrix; #define ALL(x) (x).begin(),(x).end() #define ff first #define ss second #define D(a) cerr << ">> " << #a << " = >" << a << "<" << endl #define PB push_back #define F(i,a,b) for ( int i = (a); i < (b); ++i ) #define FD(i,a,b) for ( int i = (a); i >= (b); --i ) #define R1(a) scanf("%d",&a) #define R2(a,b) scanf("%d%d",&a,&b) #define R3(a,b,c) scanf("%d%d%d",&a,&b,&c) #define DR1(a) int a; scanf("%d",&a) #define DR2(a,b) int a,b; scanf("%d%d",&a,&b) #define DR3(a,b,c) int a,b,c; scanf("%d%d%d",&a,&b,&c) template ostream & operator<<(ostream & os, const pair & p) { return os << p.ff << " " << p.ss; } template ostream & operator<<(ostream & os, const vector & v) { for (size_t i = 0; i < v.size(); ++i) { if (i) os << " "; os << v[i]; } return os; } const int INF = 1e9 + 7; const double PI = acos(-1); const double EPS = 1e-9; string movesx[] = { "UL", "UR", "R", "LR", "LL", "L" }; ii neigh[] = { {-2, -1}, {-2, +1}, {+0, +2}, {+2, +1}, {+2, -1}, {-0, -2} }; int main( ) { ios::sync_with_stdio(0); int n; cin >> n; ii s, e; cin >> s.ff >> s.ss; cin >> e.ff >> e.ss; map> prev = { { s, { {-1, -1 }, "" } } }; queue q; q.push( s ); while (!q.empty()) { ii p = q.front(); q.pop(); F(i,0,6) { ii s = neigh[i]; ii z = { p.ff + s.ff, p.ss + s.ss }; if (z.ff >= 0 && z.ss >= 0 && z.ff < n && z.ss < n && !prev.count(z)) { q.push(z); prev[z] = { p, movesx[i] }; } } } if (!prev.count(e)) { cout << "Impossible" << endl; return 0; } vector moves; while (e != ii{ -1, -1 }) { moves.PB(prev[e].ss); e = prev[e].ff; } moves.pop_back(); reverse(ALL(moves)); cout << moves.size() << endl; cout << moves << endl; return 0; }