const int N = 1e5;
int u[N]; // zeroes

int n;
cin >> n;
int permutation[n];
forn(i, n) {
  int c;
  cin >> c; // i-й элемент нужно поставить на позицию "c"

  int p = -1;
  for (; c >= 0; c--) 
    for (p++; u[p]; p++)
      ;
  u[p] = 1, permutation[p] = i;
}
/** ------------------ */

const int N = 1e5, K = 300;
int u[N], cnt[N / K + 1]; // zeroes

forn(i, n) {
  int c;
  cin >> c; // i-й элемент нужно поставить на позицию "c"

  int p = -1;
  while (K - cnt[(p + 1) / K] < c + 1)
    c -= (K - cnt[(p + 1) / K]), p += K;
  for (; c >= 0; c--) 
    for (p++; u[p]; p++)
      ;
  cnt[p / K]++, u[p] = 1, permutation[p] = i;
}