#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const int L = 20;
const long long mod = 1e9 + 7;
const long long inf = 1e18 + 10;
int a[N], b[N], c[N], fen[N];
void add(int x, int y) {
  for (x++; x < N; x += x & -x) fen[x] += y;
}
int get(int x) {
  int res = 0;
  for (x++; x; x -= x & -x) res += fen[x];
  return res;
}
int find(int k) {
  int x = 0;
  for (int i = L; i--;)
    if (x + (1 << i) < N && fen[x + (1 << i)] < k)
      k -= fen[x + (1 << i)], x += 1 << i;
  return x;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  for (int i = 0; i < n; i++) cin >> a[i];
  for (int i = 0; i < n; i++) cin >> b[i];
  for (int i = 0; i < n; i++) {
    c[i] += a[i] - get(a[i]);
    add(a[i], 1);
  }
  fill(fen, fen + N, 0);
  for (int i = 0; i < n; i++) {
    c[i] += b[i] - get(b[i]);
    add(b[i], 1);
  }
  fill(fen, fen + N, 0);
  for (int i = n - 1; i >= 0; i--) {
    int cp = c[i];
    c[i] = cp % (n - i);
    if (i) c[i - 1] += cp / (n - i);
  }
  for (int i = 0; i < n; i++) add(i, 1);
  for (int i = 0; i < n; i++) {
    int x = find(c[i] + 1);
    cout << x << ' ';
    add(x, -1);
  }
  return 0;
}
