#include using namespace std; int n, ans = INT32_MAX; int x, y, x2, y2, num; int brojkoraka[210][210]; vector vcs; bool valid(int cx, int cy){ if(cx > -1 && cx < n && cy > -1 && cy < n) return 1; return false; } void dfs(int cx, int cy, int k){ if(!valid(cx, cy)) return; if(k >= brojkoraka[cx][cy]) return; ++num; brojkoraka[cx][cy] = k; if(cx == x2 && cy == y2){ ans = min(ans, k); return; } dfs(cx-2, cy-1, k+1); dfs(cx-2, cy+1, k+1); dfs(cx, cy+2, k+1); dfs(cx+2, cy+1, k+1); dfs(cx+2, cy-1, k+1); dfs(cx, cy-2, k+1); } void iddfs(int cx, int cy, int k, int req){ if(!valid(cx, cy)){ vcs.pop_back(); return; } if(k > brojkoraka[cx][cy]) { vcs.pop_back(); return; } if(k == req && cx == x2 && cy == y2){ //cout << cx << ' ' << cy << ' '; cout << ans << '\n'; for (int i = 0; i < k; ++i) { cout << vcs[i] << ' '; } exit(0); } vcs.push_back("UL"); iddfs(cx-2, cy-1, k+1, req); vcs.push_back("UR"); iddfs(cx-2, cy+1, k+1, req); vcs.push_back("R"); iddfs(cx, cy+2, k+1, req); vcs.push_back("LR"); iddfs(cx+2, cy+1, k+1, req); vcs.push_back("LL"); iddfs(cx+2, cy-1, k+1, req); vcs.push_back("L"); iddfs(cx, cy-2, k+1, req); vcs.pop_back(); } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> x >> y >> x2 >> y2; for(int i = 0; i < n; ++i) for (int j = 0; j < n; ++j) { brojkoraka[i][j] = ans; /* code */ } dfs(x, y, 0); if(ans == INT32_MAX){ cout << "Impossible"; return 0; } iddfs(x, y, 0, ans); //cout << num << ' '; }