#include #define db double #define reg register #define LL long long #define pb push_back #define lb lower_bound #define ub upper_bound #define ull unsigned long long #define rep(i,a,b) for(int i=a,i##end=b;i<=i##end;++i) #define drep(i,a,b) for(int i=a,i##end=b;i>=i##end;--i) #define erep(i,a) for(int i=head[a];i;i=e[i].nxt) using namespace std; bool Handsome; inline int rd(){ reg int x=0;reg char o=getchar();reg bool O=0; for(;o<48 || 57y && (x=y));} inline void Mx(int &x,int y){if(x,greater > p,q; bool Most; int main(){ // printf("%.2lfMB\n",(&Most-&Handsome)/1024.0/1024.0); n=rd(); rep(i,1,n)q.push(i); rep(i,1,n){ int op=rd(),x=rd(); if(op==1){ if(vis[x])continue;vis[x]=1; while(!p.empty() && p.top()==q.top())p.pop(),q.pop(); if(q.top()==x)q.pop(); else p.push(x); } if(op==2){ while(!p.empty() && p.top()==q.top())p.pop(),q.pop(); if(q.empty())printf("%d\n",n+1); else if(q.top()!=x)printf("%d\n",q.top()); else{ q.pop(); while(!p.empty() && p.top()==q.top())p.pop(),q.pop(); if(q.empty())printf("%d\n",n+1); else printf("%d\n",q.top()); q.push(x); } } } return 0; }