#include <stdio.h>

#define MAX 2000000

int N[MAX + 1];
int counter;

void maxHeapify(int index) {
    int l = index * 2;
    int r = l + 1;

    // find max
    int maxIndex = index;
    if (l >= counter) {
        if (N[index] < N[l]) maxIndex = l;
    } else if (r >= counter) {
        if (N[maxIndex] < N[r]) maxIndex = r;
    }

    // swap
    if (maxIndex != index) {
        int temp = N[index];
        N[index] = N[maxIndex];
        N[maxIndex] = temp;
        maxHeapify(maxIndex);
    }
}

void insert() {
    // 偶数か奇数かによって比較する数が変わる
    int parent = counter / 2;

    if (N[counter] > N[parent]) {
        int temp = N[counter];
        N[counter] = N[parent];
        N[parent] = temp;
        maxHeapify(parent);
    }
}

int main() {
    // ヒープ内の要素数
    counter = 0;

    char str[64];
    int value;

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

        if (str[0] == 'i' && str[1] == 'n') {
            // insert
            scanf("%d", &value);
            N[++counter] = value;
            if (counter - 1) insert();

        } else if (str[0] == 'e' && str[1] == 'x') {
            // extract
            printf("%d\n", N[1]);
            N[1] = N[counter];
            maxHeapify(1);
            counter--;

        } else {
            break;
        }

        /// 0未満にならないように制御する
        counter = counter < 0 ? 0 : counter;
    }

    return 0;
}

