#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define REP(i,n) for(int i=0; i=b; --i) #define ALL(c) (c).begin(), (c).end() typedef long long ll; typedef vector VI; typedef vector VL; typedef vector VVI; typedef vector VVL; typedef pair P; typedef pair PL; typedef vector VD; string dir[] = {"UL", "UR", "R", "LR", "LL", "L"}; int di[] = {-2, -2, 0, 2, 2, 0}; int dj[] = {-1, 1, 2, 1, -1, -2}; int a[200][200]; int main() { int n; cin >> n; int si, sj, gi, gj; cin >> si >> sj >> gi >> gj; REP(i,n) REP(j,n) a[i][j] = -1; a[si][sj] = 6; queue

que; que.push(P(si, sj)); while (!que.empty()){ P p = que.front(); que.pop(); int i = p.first, j = p.second; REP(k,6){ int ii = i + di[k], jj = j + dj[k]; if (ii < 0 || jj < 0 || ii >= n || jj >= n || a[ii][jj] >= 0) continue; a[ii][jj] = k; que.push(P(ii,jj)); } } if (a[gi][gj] == -1){ cout << "Impossible" << endl; }else{ VI ans; while (gi != si || gj != sj){ int k = a[gi][gj]; ans.push_back(k); gi -= di[k]; gj -= dj[k]; } reverse(ALL(ans)); cout << ans.size() << endl; for (int x : ans) cout << dir[x] << " "; cout << endl; } return 0; }