#include #include #include #include #include #include #include #include #include using namespace std; int N = 1000; int n; vector> get_edges(int u) { int ua = u / N; int ub = u % N; vector> es; { int va = ua - 2; int vb = ub - 1; if (0 <= va && va < n && 0 <= vb && vb < n) { es.push_back(make_pair(N * va + vb, 3)); } } { int va = ua - 2; int vb = ub + 1; if (0 <= va && va < n && 0 <= vb && vb < n) { es.push_back(make_pair(N * va + vb, 4)); } } { int va = ua; int vb = ub + 2; if (0 <= va && va < n && 0 <= vb && vb < n) { es.push_back(make_pair(N * va + vb, 5)); } } { int va = ua + 2; int vb = ub + 1; if (0 <= va && va < n && 0 <= vb && vb < n) { es.push_back(make_pair(N * va + vb, 0)); } } { int va = ua + 2; int vb = ub - 1; if (0 <= va && va < n && 0 <= vb && vb < n) { es.push_back(make_pair(N * va + vb, 1)); } } { int va = ua; int vb = ub - 2; if (0 <= va && va < n && 0 <= vb && vb < n) { es.push_back(make_pair(N * va + vb, 2)); } } return es; } int main() { int s, t; cin >> n; { int sa, sb, ta, tb; cin >> sa >> sb >> ta >> tb; s = N * sa + sb; t = N * ta + tb; } map> ps; queue qs; ps[t] = make_tuple(-1, 0, -1); qs.push(t); while (!qs.empty()) { int u = qs.front(); qs.pop(); for (auto z : get_edges(u)) { int v = get<0>(z); int dist = get<1>(ps[u]) + 1; if (!ps.count(v)) { ps[v] = make_tuple(-1, INT_MAX, -1); } //cout << "uv " << u << " " << v << " " << dist << " " << get<1>(z) << " " << get<2>(ps[v]) << endl; if ( dist < get<1>(ps[v]) || dist == get<1>(ps[v]) && get<1>(z) < get<2>(ps[v]) ) { ps[v] = make_tuple(u, dist, get<1>(z)); qs.push(v); } } } if (!ps.count(s)) { cout << "Impossible" << endl; } else { cout << get<1>(ps[s]) << endl; for (int u = s; u != t; u = get<0>(ps[u])) { int dir = get<2>(ps[u]); auto z = ps[u]; //cout << "f " << u << " " << get<0>(z) << " " << get<1>(z) << " " << get<2>(z) << endl; switch (dir) { case 0: cout << "UL"; break; case 1: cout << "UR"; break; case 2: cout << "R"; break; case 3: cout << "LR"; break; case 4: cout << "LL"; break; case 5: cout << "L"; break; } cout << " "; } cout << endl; } return 0; }