#include <stdio.h>

#define INF -1



void insert(int *,int);
void extract_Max(int *);
void maxHeapInsert(int *,int);
void heapIncreaseKey(int *,int ,int);
void swap(int*,int*);
int left(int);
int right(int);
void maxHeapify(int*,int);

int length;

int main(){
  char str[20];
  int i,key,S[2000001];

  
  while(1){
  scanf("%s",str);


     if(str[0]=='i'){
       scanf("%d",&key);
       insert(S,key);
       
     }
     else if(str[0]=='e'){
       
       if(str[1]=='x'){
            extract_Max(S);
       }
       else if(str[1]=='n'){
         break;
       }

     }
  }
  return 0;
 
}

void extract_Max(int *A){
  
  printf("%d\n",A[1]);
  swap(&A[1],&A[length]);
  length--;
  maxHeapify(A,1);
}

void insert(int *S,int key){
  length++;
  S[length]=INF;
  heapIncreaseKey(S,length,key);
}

void heapIncreaseKey(int *S,int i,int key){
  S[i]=key;
  
  while(i>1 &&S[i/2]<S[i]){
    swap(&S[i],&S[i/2]);
    i=i/2;
  }
  
}

void swap(int *a,int *b){
  int key;

  key=*a;
  *a=*b;
  *b=key;
}


int left(int a){
  return 2*a;
}

int right(int a){
  return 2*a+1;
}



void maxHeapify(int *A,int i){
  int l,r,largest;
  l=left(i);
  r=right(i);
  if(l<=length && A[l]>A[i]) largest = l;
  else largest=i;

  if(r<=length && A[r]>A[largest]) largest = r;

  if(largest!=i){
    swap(&A[i],&A[largest]);
    maxHeapify(A,largest);
  }
  
}

