#include #include #include using namespace std; int main() { int n; cin >> n; vector p(n), q(n); for (int i = 0; i < n; ++i) cin >> p[i]; for (int i = 0; i < n; ++i) cin >> q[i]; vector pid(n), qid(n); for (int i = 0; i < n; ++i) { --p[i], --q[i]; pid[p[i]] = i; qid[q[i]] = i; } vector> a(n + 1, vector (n)); for (int i = 0; i < n; ++i) a[0][i] = p[i]; for (int i = 1; i <= n; ++i) { a[i] = a[i - 1]; vector> p; for (int j = 0; j + 1 < n; ++j) { if (qid[a[i][j]] > qid[a[i][j + 1]]) { p.push_back({max(abs(qid[a[i][j]] - j), abs(qid[a[i][j + 1]] - j - 1)), j}); } } sort(p.rbegin(), p.rend()); for (auto [_, id] : p) { if (a[i][id] != a[i - 1][id] || a[i][id + 1] != a[i - 1][id + 1]) continue; swap(a[i][id], a[i][id + 1]); } } for (int i = 0; i < n; ++i) { if (a[n][i] != q[i]) { cout << "-1" << endl; return 1; } } for (int i = 0; i <= n; ++i) for (int j = 0; j < n; ++j) cout << a[i][j] + 1 << " \n"[j == n - 1]; }