#include<stdio.h>
#include<stdio.h>

int queue[2000001];
int H=0;

void swap(int *a, int *b){
	int tmp;
	tmp=*a;
	*a=*b;
	*b=tmp;
}

void maxHeapify(int A[],int i){
	int largest=i;
	int l=2*i;
	int r=2*i+1;
	if(l<=H && A[l]>A[largest]){
		largest=l;
	}
	if(r<=H && A[r]>A[largest]){
		largest=r;
	}
	if(largest!=i){
		swap(&(A[i]),&(A[largest]));
		maxHeapify(A,largest);
	}
}

void buildMaxHeap(int A[]){
	int i;
	for(i=H/2;i>=1;i--){
		maxHeapify(A,i);
	}
}

void insert(int S[],int k){
	S[H+1]=k;H++;
	buildMaxHeap(S);
}

int extractMax(int S[]){
	int tmp=S[1];
	S[1]=S[H--];
	buildMaxHeap(S);
	return tmp;
}

int main(void){
	char command[10];
	int data;
	int i;
	scanf("%s" ,command);
	while(strcmp(command,"end")!=0){
		if(strcmp(command,"insert")==0){
			scanf("%d",&data);
			insert(queue,data);
		}
		if(strcmp(command,"extract")==0){
			printf("%d\n",extractMax(queue));
		}
		if(strcmp(command,"d")==0){
			for(i=1;i<=H;i++){
				printf("%d ",queue[i]);
			}printf("\n");
		}
		scanf("%s",command);
	}
	return 0;
}
	