#include using namespace std; const int N = 205; string S[6] = {"UL", "UR", "R", "LR", "LL", "L"}; int dy[6] = {-1, 1, 2, 1, -1, -2}; int dx[6] = {-2, -2, 0, 2, 2, 0}; const int INF = 1e9; int n; inline int get(int i, int j){ return i * n + j; } int dist[N * N]; int par[N * N]; int vis[N * N]; string GO[N * N]; void bfs(int s){ for(int i = 0; i < n * n; i++) dist[i] = INF; dist[s] = 0; queue q; q.push(s); vis[s] = 1; while(!q.empty()){ int u = q.front(); q.pop(); int i = u / n, j = u % n; for(int dir = 0; dir < 6; dir++){ int _i = i + dx[dir], _j = j + dy[dir]; if(_i >= 0 && _i < n && _j >= 0 && _j < n){ int v = get(_i, _j); if(!vis[v]){ vis[v] = 1; par[v] = u; GO[v] = S[dir]; dist[v] = dist[u] + 1; q.push(v); } } } } } void dfs(int node, int node2){ if(node == node2) return; dfs(par[node], node2); cout << GO[node] << " "; } int main(){ cin >> n; int x1, y1, x2, y2; cin >> x1 >> y1 >> x2 >> y2; bfs(get(x1, y1)); if(dist[get(x2, y2)] == INF){ cout << "Impossible";return 0; } cout << dist[get(x2, y2)] << endl; dfs(get(x2, y2), get(x1, y1)); }