else{
int t=query(lson,l,m,y);
if(t>=0) return t;
return query(rson,m+1,r,y);
}
}
int main(){
scanf("%d",&q);
for(int i=0;i ask[i].init();
X[i]=ask[i].x;
}
sort(X,X+q);
m=unique(X,X+q)-X;
bulid(1,1,m);
for(int i=0;i int k=ask[i].k,x=lower_bound(X,X+m,ask[i].x)-X+1,y=ask[i].y;
s[x].insert(y);
update(1,x);
}
else if(k==1){
s[x].erase(s[x].find(y));
update(1,x);
}
else{
int pos=query(1,x+1,m,y);
if(pos==-1) printf("-1\n");
else{
printf("%d %d\n",X[pos-1],*s[pos].upper_bound(y));
}
}
}
return 0;
}