#include #define ls(p) (p << 1) #define rs(p) (p << 1 | 1) #define For(i,l,r) for (register int i=l; i<=r; i++) using namespace std; typedef unsigned long long LL; typedef signed long long ll; template inline void read(T &x) { char c = getchar(); int w = 1; x = 0; while (!isdigit(c)) (c == '-') && (w = -w), c = getchar(); while (isdigit(c)) x = (x << 1) + (x << 3) + (c ^ '0'), c = getchar(); x *= w; } const int N = 5000010; int n, opt, x, a[N]; struct node { int Lmax; } st[N<<2]; inline void push_up(int p, int len) { st[p].Lmax = st[ls(p)].Lmax + (st[ls(p)].Lmax == len ? st[rs(p)].Lmax : 0); } inline void update(int p, int l, int r, int x, int v) { if (l == r) { st[p].Lmax = v; return; } int mid = l+r >> 1; if (x <= mid) update(ls(p), l, mid, x, v); if (x > mid) update(rs(p), mid+1, r, x, v); push_up(p, mid-l+1); } signed main() { read(n); // memset(a, 0, sizeof(a)); for (register int i=1; i<=n; ++i) { read(opt); if (opt == 1) { read(x); if (!a[x]) { a[x] = 1; update(1, 1, n, x, 1); } } else { read(x); if (!a[x] && st[1].Lmax == x-1) { update(1, 1, n, x, 1); printf("%d\n", st[1].Lmax+1); update(1, 1, n, x, 0); } else { printf("%d\n", st[1].Lmax+1); } } } getchar(); return 0; }