#include<stdio.h>
#define MAX 2000000
#define MIN -1

void swap(int A[],int a,int b){
int temp;

temp=A[a];
A[a]=A[b];
A[b]=temp;

return;
}


void insert(int A[],int last){
int i=last;

while(i!=1){
 if(A[i]>A[i/2]){swap(A,i,i/2); i=i/2;}
 else{return;}
}

return;
}




void sort(int A[],int i){
if(i*2>MAX){return;}
if(A[i]>A[2*i]&&A[i]>A[2*i+1])return;

else if(A[2*i]>A[2*i+1]){swap(A,i,2*i);i=i*2;sort(A,i);}
else if(A[2*i]<A[2*i+1]){swap(A,i,2*i+1);i=i*2+1;sort(A,i);}
else if(A[2*i]==A[2*i+1]&&A[i]<A[2*i]){swap(A,i,2*i);i=i*2;sort(A,i);}
return;
}



void deletemax(int A[],int *last){
int i=1;

printf("%d\n",A[1]);

swap(A,1,(*last));
A[*last]=MIN;
(*last)--;

sort(A,1);

return;
}





int main(){
int n,i;
int A[MAX];
int last;
char com[6];
int a;


for(i=0;i<=MAX;i++)A[i]=MIN;

a=1;
last=0;

while(a>0){
 scanf("%s",com);

 switch(com[2]){
  case 'd':/*end*/
           a=0;
           break;

  case 's':/*insert*/
           last++;
           scanf("%d",&A[last]);
           insert(A,last);
           break;

  case 't':/*extract*/
           deletemax(A,&last);
           break;
 }/*switch end*/

}/*for end*/



return 0;
}
