1 #include<iostream>
2 #include<cstdio>
3 #include<set>
4 #include<utility>
5 using namespace std;
6 int flag=1;
7 typedef pair<int,int> p;
8 typedef set<p>::iterator setit;
9 set<p> s;
10 int main(){
11 while(flag){
12 scanf("%d",&flag);
13 if(!flag) break;
14 if(flag==2) {
15 if(s.empty()) {
16 printf("%d\n",0);continue;
17 }
18 setit i=--s.end();
19 printf("%d\n",(*(i)).second);
20 s.erase(i);
21 }
22 if(flag==3) {
23 if(s.empty()) {
24 printf("%d\n",0);continue;
25 }
26 setit i=s.begin();
27 printf("%d\n",(*(i)).second);
28 s.erase(i);}
29 if(flag==1){
30 int x,y;
31 scanf("%d%d",&x,&y);
32 s.insert(make_pair(y,x));
33 }
34 }
35 return 0;
36 }