#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct Node{
    int id,priority;
    struct Node*next;
};
struct Node* createNode(int id,int priority){
    struct Node*n=(struck Node*)malloc(sizeof(struct Node));
    n->id=id;
    n->priority=priority;
    n->next=NULL;
    return n;
}
int insert(struct Node* *head,int id,int priority){
    if(priority<1||priority>100){
        printf("Invalid input\n");
        return 0;
    }+
    struct Node*newNode=createNode(id,priority);
    if(*head==NULL||(*head)->priority<priority){
        newNode->next=*head;
        *head=newNode;
        return 1;
    }
    struct Node*cur=*head;
    while(cur->next&&cur->next->priority>=priority)
    cur=cur->next;
    newNode->next=cur->next;
    cur->next=newNode;
    return 1;
}
void delete(struct Node* *head){
    if(*head==NULL)
    printf("Queue is empty\n");
    else{
    printf("%d\n",(*head)->id);
    struct Node*temp=*head;
    *head=(*head)->next;
    free(temp);
    }
}
int main(){
    int N;
    scanf("%d",&N);
    struct Node*head=NULL;
    int invalid=0;
    for(int i=0;i<N;i++){
        char cmd[10];
        scanf("%s",&cmd);
        if(strcmp(cmd,"INSERT")==0){
            int id,p;
            scanf("%d %d",&id,&p);
            if(!insert(&head,id,p)){
                invalid=1;
                break;
            }
        }else if(strcmp(cmd,"DELETE")==0){
            if(!invalid)
            delete(&head);
        }else{
            printf("Invald input\n");
            invalid=1;
            break;
        }
    }
    return 0;
}
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    

}