#include #include #include #include using namespace std;struct Node{int l=0,r=0,size=0,key=0,id=0;uint32_t priority=0;}; int main(){ios::sync_with_stdio(false);cin.tie(nullptr);mt19937 rng(923847);vectortr(1);auto pull=[&](int x){tr[x].size=tr[tr[x].l].size+tr[tr[x].r].size+1;};auto split=[&](auto&&self,int root,int key)->pair{if(!root)return{0,0};if(tr[root].key<=key){auto[a,b]=self(self,tr[root].r,key);tr[root].r=a;pull(root);return{root,b};}auto[a,b]=self(self,tr[root].l,key);tr[root].l=b;pull(root);return{a,root};};auto merge=[&](auto&&self,int a,int b)->int{if(!a||!b)return a?a:b;if(tr[a].priority>op&&op){if(op==1){int id,key;cin>>id>>key;int z=tr.size();tr.push_back({0,0,1,key,id,static_cast(rng())});auto[a,b]=split(split,root,key);root=merge(merge,merge(merge,a,z),b);}else{if(!root){cout<<0<<'\n';continue;}int z=root;if(op==2)while(tr[z].r)z=tr[z].r;else while(tr[z].l)z=tr[z].l;cout<