#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){
    if(priority < 1){
        printf("Invalid input");
        exit(0); }
        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 0;
        }
        struct Node *temp = front;
        while (temp->next != NULL && temp->next->priority >= priority){
            temp = temp->next;
        }
        newNode->next = temp->next;
        temp->next = newNode;
}
void delete(){
    if(front == NULL){
        printf("Queue is empty\n");
        return 0;
    }
    
    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;     
}