#include using namespace std; typedef long long ll; const int N = 205; int visited[N][N],dist[N][N],last_r[N][N],last_c[N][N]; string last_move[N][N]; int dr[] = {-2,-2,0,2,2,0}; int dc[] = {-1,1,2,1,-1,-2}; string names[] = {"UL", "UR", "R", "LR", "LL", "L"}; int n; bool in_range(int x){ return 0 <= x && x < n; } bool valid(int r, int c){ if(!in_range(r) || !in_range(c)) return false; return !visited[r][c]; } int sr,sc,tr,tc; void output(){ cout << dist[tr][tc] << '\n'; vector ans; int r = tr; int c = tc; for(int i = 0; i < dist[tr][tc]; ++i){ ans.push_back(last_move[r][c]); int nr = last_r[r][c]; int nc = last_c[r][c]; r = nr; c = nc; } reverse(ans.begin(),ans.end()); for(int i = 0; i < dist[tr][tc]; ++i) cout << ans[i] << " \n"[i==dist[tr][tc]-1]; exit(0); } void bfs(){ vector > bfs(1,{sr,sc}); for(int i = 0; i < bfs.size(); ++i){ int r = bfs[i].first, c = bfs[i].second; //cout << "cur: " << r << ' ' << c << '\n'; if(r == tr && c == tc) output(); for(int j = 0; j < 6; ++j){ int nr = r + dr[j]; int nc = c + dc[j]; if(valid(nr,nc)){ dist[nr][nc] = dist[r][c] + 1; last_r[nr][nc] = r; last_c[nr][nc] = c; last_move[nr][nc] = names[j]; visited[nr][nc] = true; bfs.push_back({nr,nc}); } } } puts("Impossible"); } int main(){ cin >> n >> sr >> sc >> tr >> tc; bfs(); }