#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct Node{
    int id;
    int ar;
    struct Node *next;
}node;
node *head=NULL;
void insert(int id,int pri){
    node *newnode=(node*)malloc(sizeof(node));
    newnode->id=id;
    newnode->ar=pri;
    newnode->next=NULL;
    if(!head || pri>head->pri){
        newnode->next=head;
        head=newnode;
        return;
    }
    node *temp=head;
    while(temp->next && temp->next->pri>=pri){
        temp->next=next;
    }
    newnode->next=temp->next;
    temp->next=newnode;
}
void delete(){
    if(!head){
        printf("Queue is empty");
        return ;
    }
    printf("%d\n",head->id);
    node *temp=head;\
    head=head->next;
    free(temp);
}
int main(){
    int n;
    scanf("%d",&n);
    char op[10];
    int id,pri;
    for(int i=0;i<n;i++){
        scanf("%s",op);
        if(strcmp(op,"INSERT")==0){
            scanf("%d %d",&id,&pri);
            if(pri<0){
                printf("Invalid input");
                return 0;
            }
            insert(id,pri);
        }
        else if(strcmp(op,"DELETE")==0){
            delete();
        }
    }
    return 0;
}