#include #define N 5000006 #define lowbit(x) ((x) & (-x)) using namespace std; int n, x, op; int tree[N]; void update(int i, int x) { for (int pos = i; pos <= n; pos += lowbit(pos)) { tree[pos] += x; } } int query(int i) { int res = 0; for (int pos = i; pos; pos -= lowbit(pos)) { res += tree[pos]; } return res; } int query(int a, int b) { return query(b) - query(a - 1); } void solve() { int ans = 0, l = 1, r = n + 1, mid; while (l < r) { mid = (l + r) >> 1; if (query(1, mid) == mid) { ans = mid; l = mid + 1; } else { r = mid; } } printf("%d\n", ans + 1); } int main() { scanf("%d", &n); for (int i = 1; i <= n; ++i) { scanf("%d%d", &op, &x); if (op == 1) { if (query(x, x) == 0) { update(x, 1); } } else if (op == 2) { if (query(x, x) == 0) { update(x, 1); solve(); update(x, -1); } else { solve(); } } } return 0; }