#include<stdio.h>
#include<string.h>
#define MAX 2000000
#define INFTY 1000000000

int H,A[MAX+1];

void maxHeapify(int i){
    int l = 2 * i;
    int r = 2 * i  +1;
    int largest,t;
    
    // 左の子、自分、右の子で値が最大のノードを選ぶ
    if(l<=H && A[l]>A[i]) largest=l;
    else largest=i;
    if(r<=H && A[r]>A[largest]) largest=r;
    
    if(largest != i){
        t=A[i];
        A[i]=A[largest];
        A[largest]=t;
        maxHeapify(largest);
    }
}


int extract(){
    int maxv;
    if(H<1) return -INFTY;
    maxv = A[1];
    A[1]=A[H--];
    maxHeapify(1);
    return maxv;
}

void increaseKey(int i, int key) {
    if ( key < A[i] ) return;
    int tmp;
     A[i] = key;
    while ( i > 1 && A[i / 2] < A[i] ) {
        tmp = A[i];
        A[i]=A[i/2];
        A[i/2]=tmp;
       
        i = i / 2;
         }
     }

void insert(int key) {
  H++;
    A[H] = -INFTY;
    increaseKey(H, key);
}

int main(){
int key;
 char com[10];

 while ( 1 ) {
     scanf("%s", com);
     if ( com[0] == 'e' && com[1] == 'n' ) break;
     if ( com[0] == 'i' ) {
         scanf("%d",&key);
         insert(key);
     }else{
         printf("%d\n",extract());
     }
 }
    return 0;
}


