#include #include #include #include #include #include using namespace std; void printShortestPath(int n, int i1, int j1, int i2, int j2) { // 6 6 0 1 if ((i1 - i2) % 2 == 0) { if (((((i1 - i2) / 2) % 2 == 0) && ((j1 - j2) % 2 == 0)) || ((((i1 - i2) / 2) % 2 != 0) && ((j1 - j2) % 2 == 1))) { vector path; while (true) { if (j1 == j2) { if (j1 == n) { if (i1 < i2) { path.push_back("LL"); j1--; i1 += 2; path.push_back("LR"); j1++; i1 += 2; } else if (i1 > i2) { path.push_back("UL"); j1--; i1 -= 2; path.push_back("UR"); j1++; i1 -= 2; } } else { if (i1 < i2) { path.push_back("LR"); j1++; i1 += 2; path.push_back("LL"); j1--; i1 += 2; } else if (i1 > i2) { path.push_back("UR"); j1++; i1 -= 2; path.push_back("UL"); j1--; i1 -= 2; } } } if (i1 == i2) { if (j2 > j1) { path.push_back("R"); j1 += 2; } else if (j1 > j2) { path.push_back("L"); j1 -= 2; } } if (j1 < j2) { if (i1 < i2) { path.push_back("LR"); j1++; i1 += 2; } else if (i1 > i2) { path.push_back("UR"); j1++; i1 -= 2; } } if (j1 > j2) { if (i1 < i2) { path.push_back("LL"); j1--; i1 += 2; } else if (i1 > i2) { path.push_back("UL"); j1--; i1 -= 2; } } if (i1 == i2 && j1 == j2) break; } cout << path.size() << endl; for (int i = 0; i < path.size(); i++) { cout << path.at(i) << " "; } return; } } cout << "Impossible" << endl; } int main() { int n, i1, i2, j1, j2; cin >> n >> i1 >> j1 >> i2 >> j2; printShortestPath(n, i1, j1, i2, j2); return 0; }