#include <bits/stdc++.h>
using namespace std;
int jie[200010], tree[200010], num[200010];
int n;
int lowbit(int x) { return x & (-x); }
void update(int x, int date) {
  for (; x <= n; x += lowbit(x)) {
    tree[x] += date;
  }
}
int query(int x) {
  int sum = 0;
  for (; x > 0; x -= lowbit(x)) sum += tree[x];
  return sum;
}
int find(int k) {
  int l = 1, r = n, mi, p;
  while (l < r) {
    mi = (l + r) / 2;
    p = query(mi);
    if (p < k)
      l = mi + 1;
    else
      r = mi;
  }
  update(l, -1);
  return l;
}
int main() {
  int T, t, i, j, u, p;
  int k, m;
  scanf("%d", &n);
  for (i = 1; i <= n; i++) update(i, 1);
  for (i = n - 1; i >= 0; i--) {
    scanf("%d", &u);
    u++;
    update(u, -1);
    m = query(u);
    num[i] += m;
  }
  for (i = 1; i <= n; i++) update(i, 1);
  for (i = n - 1; i >= 0; i--) {
    scanf("%d", &u);
    u++;
    update(u, -1);
    m = query(u);
    num[i] += m;
  }
  for (i = 1; i < n; i++) {
    k = num[i] / (i + 1);
    num[i] %= (i + 1);
    num[i + 1] += k;
  }
  for (i = 1; i <= n; i++) update(i, 1);
  for (i = n - 1; i >= 1; i--) {
    p = find(num[i] + 1) - 1;
    printf("%d ", p);
  }
  printf("%d\n", find(1) - 1);
}
