#include<stdio.h>
#define N 1000000
#define NIL -500000000

int c=0,T[N];

int Parent(int i){
  return i/2;
}

int Left(int i){
  return 2*i;
}

int Right(int i){
  return 2*i+1;
}

void maxHeapify(int i){
  int l,r,largest,key;

  l=Left(i);
  r=Right(i);

  if(l<=c&&T[l]>T[i]) largest=l;
  else largest=i;

  if(r<=c&&T[r]>T[largest]) largest=r;

  if(largest!=i){
    key=T[i];
    T[i]=T[largest];
    T[largest]=key;
    maxHeapify(largest);
  }

}

void maxHeapInsert(int key){
  c++;
  T[c]=NIL;
  heapIncreaseKey(c,key);
}

void heapIncreaseKey(int i,int key){
  int box;

  if(key<T[i]) printf("error 新しいキーは現在のキーより小さい\n");
  T[i]=key;
  while(i>1&&T[Parent(i)]<T[i]){
    box=T[i];
    T[i]=T[Parent(i)];
    T[Parent(i)]=box;
    i=Parent(i);
  }
}

int heapExtractMax(){
  int max;

  if(c<1) printf("error ヒープアンダーフロー\n");
  max=T[1];
  T[1]=T[c];
  c--;
  maxHeapify(1);
  return max;
}

int main(void){
  int x,i;
  char com[20];

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