#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2e5 + 10, lg = 17;
int n, a[MAXN], b[MAXN], sum[MAXN];
int fen[MAXN * 2];
void add(int i, int t) {
  for (i++; i < MAXN * 2; i += i & (-i)) fen[i] += t;
}
int getv(int v) {
  int cur = 0;
  for (int i = lg; i >= 0; i--) {
    if (v > fen[cur + (1 << i)]) v -= fen[cur + (1 << i)], cur += (1 << i);
  }
  return cur;
}
int geti(int v) {
  int res = 0;
  for (v++; v > 0; v -= v & (-v)) res += fen[v];
  return res;
}
void getord() {
  fill_n(fen, MAXN * 2, 0);
  for (int i = 0; i < n; i++) add(i, 1);
  for (int i = 0; i < n; i++) {
    sum[n - 1 - i] += geti(a[i]) - 1;
    add(a[i], -1);
  }
}
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++) cin >> b[i];
  getord();
  swap(a, b);
  getord();
  for (int i = 1; i < n; i++) sum[i + 1] += sum[i] / (i + 1), sum[i] %= (i + 1);
  fill_n(fen, MAXN * 2, 0);
  for (int i = 0; i < n; i++) add(i, 1);
  for (int i = n - 1; i >= 0; i--) {
    int val = getv(sum[i] + 1);
    cout << val << ' ';
    add(val, -1);
  }
}
