#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
struct bingren{ char name[20];
int ji;
}x,man[100005];
int n,qlen=0; char op[10];
void set(bingren x){
qlen++;
int son=qlen,parent;
man[son]=x;
while(son>1){
parent=son/2;
if(man[parent].ji>=man[son].ji)break;
swap(man[parent],man[son]);
son=parent;
}
}
bingren get(){
int son,parent=1;
x=man[parent]; man[parent]=man[qlen];
qlen--;
while(parent*2<=qlen){ son=parent*2; if(son+1<=qlen && man[son].ji<man[son+1].ji)son++;
if(man[parent].ji>=man[son].ji)break;
swap(man[parent],man[son]);
parent=son;
}
return x;
}
int main(){
cin>>n;
for(int i=1;i<=n;++i){
scanf("%s",op);
if(strcmp(op,"pop")==0 && !qlen){
printf("%s\n","none");
}else if(strcmp(op,"pop")==0 && qlen){
x=get();
printf("%s %d\n",x.name,x.ji);
}else{
scanf("%s%d",x.name,&x.ji);
set(x);
}
}
return 0;
}