#include <bits/stdc++.h>
using namespace std;

const int S = 1 << 19;
struct seg_node {
	int sum;
	int suff;
};
seg_node seg[2*S];

void update_node(int i) {
	if (i >= S) {
		seg[i].suff = max(0, seg[i].sum);
	} else {
		seg[i].sum = seg[2*i].sum + seg[2*i+1].sum;
		seg[i].suff = max(seg[2*i+1].suff, seg[2*i+1].sum + seg[2*i].suff);
	}
}

void update(int i, int d) {
	seg[i+S].sum += d;
	for (int a = i+S; a; a /= 2) {
		update_node(a);
	}
}

int main() {
	ios::sync_with_stdio(0), cin.tie(0);
	int N; cin >> N;
	vector<int> P(N);
	vector<int> invP(N);
	for (int i = 0; i < N; i++) {
		cin >> P[i]; P[i] --;
		invP[P[i]] = i;
	}

	int curAns = N;
	for (int i = 0; i < N; i++) {
		while (seg[1].suff <= 0) {
			curAns--;
			update(invP[curAns], 1);
		}
		cout << curAns+1 << " \n"[i+1==N];

		int loc; cin >> loc; loc--;
		update(loc, -1);
	}

	return 0;
}
