#include<stdio.h>
#include<stdlib.h>
#include<string.h>

struct Node{
    int id;
    int priority;
    struct Node *next;
};

struct Node *front = NULL;

void insert (int id, int priority){
    struct Node *newNode = (struct Node *) malloc(sizeof(struct Node));
    newNode->id = id;
    newNode->priority = priority;
    newNode->next = NULl;
    
    if(front == NULL || priority > front->priority){
        newNode->next = front;
        front = newNode;
        return;
    }
    struct Node *temp = front;
    while (temp->next != NULL && temp->next >= priority){
        temp = temp->next;
    }
    newNode->next = temp->next;
    temp->next = newNode = newNode;
}
void delete(){
    if(front == NULL){
        printf("Oueue is empty\n");
        return;
    }
    
    struct Node *temp = front;
    printf("%d\n", temp->id);
    front = front->next;
    free(temp);
}

int main(){
    int N;
    scanf("%d", &N);
    
    char operation[10];
    int id,priority
;
    
    for(int i = 0; i < N; i++){
        scanf("%s", operation);
        
        if(strcmp(operation,"INSERT") == 0){
            scanf("%d %d", &id, &priority);
            insert(id, priority);
        }
        else if(strcmp(operation,"DELETE") == 0){
            delete();
        }
    }
    return 0;
}