#include <functional>
#include <iostream>
#include <ostream>
#include <queue>
using namespace std;

int main() {
    //大顶堆
    priority_queue<int,vector<int>,less<int>> hinp;
    int n ; 
    cin >> n;
    for(int i =  0 ; i < n ; i++){
        string s;
        cin>>s;
        if(s[0]=='p'&&s[1]=='u'){
            //push
            int t;
            cin>>t;
            hinp.push(t);
        }
        if(s[0]=='t'){
            if(hinp.empty()){
                cout<<"empty"<<endl;
                continue;
            }
            cout<<hinp.top()<<endl;
        }
        if(s[0]=='p'&&s[1]=='o'){
            if(hinp.empty()){
                cout<<"empty"<<endl;
                continue;
            }
            cout<<hinp.top()<<endl;
            hinp.pop();
                    }


    }


    return 0;

}
// 64 位输出请用 printf("%lld")

less(大根堆) greater(小根堆)使用c++的priority_queue容器实现对大更小更堆的操作