#include <bits/stdc++.h>
#define ll long long
#define rll register ll
#define cll const ll
#define N 1000005
using namespace std;
inline ll read()
{
rll x=0;bool f=1;register char c=getchar();
while(c<48||c>57){if(c=='-') f=0;c=getchar();}
while(c>=48&&c<=57){x=x*10+(c^48);c=getchar();}
return f?x:-x;
}
inline void write(ll x)
{
if(x<0) putchar('-'),x=-x;
if(x>9) write(x/10);
putchar(x%10+48);
}
cll n=read();
ll idx,cnt,c[N],t[N],ti[N],op[N];
inline void add(ll x,ll y){while(x<=N) c[x]+=y,x+=(x&-x);}
inline ll query(ll x)
{
rll ret=0;
while(x) ret+=c[x],x-=(x&-x);
return ret;
}
inline ll get(ll x)
{
rll l=1,r=N,mid,ret;
while(l<=r)
{
mid=(l+r)>>1;
if(query(mid-1)+1>=x)
ret=mid,r=mid-1;
else l=mid+1;
}
return ret;
}
int main()
{
for(rll i=1;i<=n;i++)
{
op[i]=read(),t[i]=read();
if(op[i]!=4) ti[++cnt]=t[i];
}
sort(ti+1,ti+cnt+1);
cnt=unique(ti+1,ti+cnt+1)-ti-1;
for(rll i=1;i<=n;i++)
{
if(op[i]!=4) t[i]=lower_bound(ti+1,ti+1+cnt,t[i])-ti;
if(op[i]==1) add(t[i],1);
else if(op[i]==2) add(t[i],-1);
else if(op[i]==3) write(query(t[i]-1)+1),putchar('\n');
else if(op[i]==4) write(ti[get(t[i]+1)-1]),putchar('\n');
else if(op[i]==5) write(ti[get(query(t[i]-1)+1)-1]),putchar('\n');
else write(ti[get(query(t[i]-1)+2)-1]),putchar('\n');
}
return 0;
}