#include using namespace std; typedef pair pii; typedef long long ll; const int N = 2000086, MOD = 998244353, INF = 0x3f3f3f3f; ll res; int n, m, cnt, w[N]; pii ans[N]; typedef pair piii; int main() { cin >> n; for (int i = 1; i < n + 1; i++) scanf("%d", w + i); set st = {{{1, n}, -1}}; for (int i = 1; i < n + 1; i++) { auto u = st.upper_bound({{w[i], INF}, INF}); // printf("%d %d\n", st.begin()->first.first, st.begin()->first.second); // if (u == st.begin()) { // exit(0); // } assert(u != st.begin()); u--; ans[i].first = u->second + 1; int l = u->first.first, r = u->first.second; ans[i].second = r - l; st.erase(u); if (w[i] - l >= 1) st.insert({{l, w[i] - 1}, ans[i].first}); if (r - w[i] >= 1) st.insert({{w[i] + 1, r}, ans[i].first}); } for (int i = 1; i < n + 1; i++) printf("%d ", ans[i].first); puts(""); for (int i = 1; i < n + 1; i++) printf("%d ", ans[i].second); return 0; }