typedef long long ll; typedef struct { int c,l,r; } Node; Node ns[6000000]; int nn; void add(int i,ll v,ll l,ll r,int inc){ Node*p=ns+i; p->c+=inc; if(ll){ p->l=++nn; } add(p->l,v,l,c,inc); }else{ if(!p->r){ p->r=++nn; } add(p->r,v,c,r,inc); } } } int count(int i,ll v,ll l,ll r){ Node*p=ns+i; ll c=(l+r)/2; return vl?count(p->l,v,l,c):0)+(p->r?ns[p->r].c:0): (p->r?count(p->r,v,c,r):0); } ll a[100010]; int n; main(){ ll offset=1ll<<49; int t,x; scanf("%d",&x); for(;~scanf("%d%d",&t,&x);){ if(t==1){ ll y=x+offset; a[++n]=y; add(0,y,0,1ll<<50,1); } if(t==2){ ll y=a[x]; add(0,y,0,1ll<<50,-1); } if(t==3){ offset-=x; } { int l=0; int r=ns[0].c+1; while(l=c){ l=c; }else{ r=c; } } printf("%d\n",l); } } }