#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 7;
int add[4 * N];
int t[4 * N];
int rev[N];
int q[N];
void upd(int v, int x) {
  add[v] += x;
  t[v] += x;
}
void push(int v) {
  if (add[v]) {
    upd(v * 2 + 1, add[v]);
    upd(v * 2 + 2, add[v]);
    add[v] = 0;
  }
}
void upd(int v, int l, int r, int tl, int tr, int x) {
  if (tl > r || tr < l) {
    return;
  }
  if (tl >= l && tr <= r) {
    upd(v, x);
  } else {
    int tm = (tl + tr) / 2;
    push(v);
    upd(v * 2 + 1, l, r, tl, tm, x);
    upd(v * 2 + 2, l, r, tm + 1, tr, x);
    t[v] = max(t[v * 2 + 1], t[v * 2 + 2]);
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    int x;
    cin >> x;
    rev[x] = i;
  }
  for (int i = 1; i <= n; i++) {
    cin >> q[i];
  }
  auto decrease = [&](int x) {
    upd(0, 1, rev[x], 1, n, 1);
    if (t[0] > 0) {
      upd(0, 1, rev[x], 1, n, -1);
      return false;
    } else {
      return true;
    }
  };
  int x = n;
  for (int i = 1; i <= n; i++) {
    while (decrease(x)) x--;
    cout << x << ' ';
    upd(0, 1, q[i], 1, n, -1);
  }
}
