#include <bits/stdc++.h>
using namespace std;
const int maxn = 400010;
int c[maxn];
int ans[maxn];
void upd(int n, int k) {
  n++;
  while (n < maxn) c[n] += k, n += n & (-n);
}
int get(int n) {
  n++;
  int ans = 0;
  while (n) ans += c[n], n -= n & (-n);
  return ans;
}
int BS(int n) {
  int l = 0, r = maxn - 1, mid;
  while (l < r) {
    mid = (l + r) / 2;
    if (get(mid) >= n)
      r = mid;
    else
      l = mid + 1;
  }
  return l;
}
int arr[maxn];
int a[maxn], b[maxn];
int main() {
  int n, i, j, k;
  cin >> n;
  for (i = 0; i < n; i++) cin >> a[i];
  for (i = 0; i < n; i++) cin >> b[i];
  for (i = 0; i < n; i++) upd(i, 1);
  for (i = 0; i < n; i++) {
    arr[i] += get(a[i]) - 1;
    upd(a[i], -1);
  }
  for (i = 0; i < n; i++) upd(i, 1);
  for (i = 0; i < n; i++) {
    arr[i] += get(b[i]) - 1;
    upd(b[i], -1);
  }
  for (i = n - 1; i >= 0; i--) {
    if (arr[i] <= n - i - 1)
      ;
    else {
      arr[i] %= n - i;
      if (i) arr[i - 1]++;
    }
  }
  for (i = 0; i < n; i++) upd(i, 1);
  for (i = 0; i < n; i++) ans[i] = BS(arr[i] + 1), upd(ans[i], -1);
  for (i = 0; i < n; i++) cout << ans[i] << " ";
  puts("");
}
