#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; typedef unsigned long long ull; typedef vectorvl; typedef vectorvi; typedef vectorvb; typedef vectorvd; typedef vectorvc; typedef vectorvs; #define MP make_pair #define all(v) v.begin(),v.end() const ll mod = 1000000007; const ll OO = (ll)1e18; const int dx[] = { 0, 1, -1, 0 }; const int dy[] = { 1, 0, 0, -1 }; ll gcd(ll a, ll b){ if (b == 0){ return a; }return gcd(b, a % b); } ll fast_power(double base, ll power){ if (power == 1) return base; if (power % 2 == 0) return fast_power((base*base), power / 2); else return(base*fast_power((base*base), power / 2)); } //#pragma warning (disable : 4996) void Qalbaz() { #ifndef ONLINE_JUDGE freopen("input.txt", "r", stdin); freopen("output.txt", "w", stdout); #endif } int n, x2, y2; bool valid(int i, int j) { if (i < 0 || i >= n || j < 0 || j >= n) return false; return true; } void bfs(int x1, int y1) { bool mark[200][200] = {false}; mark[x1][y1] = true; bool found = false, f; queue, int>>>q; vector, int>>vec, v, dis; vec.push_back(MP(MP(x1, y1), 0)); q.push(vec); int dis1, dis2, x, y; while (!q.empty()) { v = q.front(); q.pop(); dis1 = v[v.size() - 1].first.first; dis2 = v[v.size() - 1].first.second; if (dis1 == x2 && dis2 == y2) { if (!found) { dis = v; found = true; continue; } found = true; if (dis.size() == v.size()) { f = false; for (int i = 0; i < dis.size() && !f; i++) if (v[i].second < dis[i].second) f = true; if (f) dis = v; } else if (dis.size() > v.size()) dis = v; } x = dis1 - 2, y = dis2 - 1; if (valid(x, y) && !mark[x][y]) { v.push_back(MP(MP(x, y), 1)); mark[x][y] = 1; q.push(v); v.pop_back(); } x = dis1 - 2, y = dis2 + 1; if (valid(x, y) && !mark[x][y]) { v.push_back(MP(MP(x, y), 2)); mark[x][y] = 1; q.push(v); v.pop_back(); } x = dis1, y = dis2 + 2; if (valid(x, y) && !mark[x][y]) { v.push_back(MP(MP(x, y), 3)); mark[x][y] = 1; q.push(v); v.pop_back(); } x = dis1 + 2, y = dis2 + 1; if (valid(x, y) && !mark[x][y]) { mark[x][y] = 1; v.push_back(MP(MP(x, y), 4)); q.push(v); v.pop_back(); } x = dis1 + 2, y = dis2 - 1; if (valid(x, y) && !mark[x][y]) { v.push_back(MP(MP(x, y), 5)); mark[x][y] = 1; q.push(v); v.pop_back(); } x = dis1, y = dis2 - 2; if (valid(x, y) && !mark[x][y]) { v.push_back(MP(MP(x, y), 6)); mark[x][y] = 1; q.push(v); v.pop_back(); } } if (found) { cout << dis.size() - 1 << endl; for (int i = 1; i < dis.size(); i++) { if (dis[i].second == 1) cout << "UL "; else if (dis[i].second == 2) cout << "UR "; else if (dis[i].second == 3) cout << "R "; else if (dis[i].second == 4) cout << "LR "; else if (dis[i].second == 5) cout << "LL "; else cout << "L "; } } else cout << "Impossible" << endl; } int main(){ //Qalbaz(); ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; int x1, y1; cin >> x1 >> y1 >> x2 >> y2; bfs(x1, y1); return 0; }