#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct patient {
    int id;
    int priority;
    struct patient*next;
}patient;
patient* head= NULL;
void insertpatient(int id,int priority){
    patient* newpatient =(patient*)malloc(sizeof(patient));
    newpatient ->id = id;
    newpatient -> priority=priority;
    newpatient -> next=NULL;
    if(head == NULL || priority > head->priority){
        newpatient ->next = head;
        head= new patient;
        }else{
            patient* current=head;
            while(current -> next=head;
            head = newpatient;
        }else{
            patient* current =head;
            while(current -> next != NULL&&current ->next->priority >=priority){
                current = current->next;
            }
            newpatient->next = current ->next;
            current ->next = newpatient;
        }
vod deletepatient(){
    if(head == NULL){
        printf("queue is empty\n");
    }else{
        patient* temp = head;
        printf("%d\n",temp->id);
        head = head -> next;
        free(temp);
    }
}
int main() {
    int N;
    scanf("%d",&N);
    for(int i =0;i < N;i++){
        char operation[10];
        scanf("%s",operation);
        if(strcmp(operation,"INSERT")==0){
            int id,priority;
            scanf("%d %d",&id,&priority);
            insertpatient(id,priority);
        }else if(strcmp(operation,"DELETE") == 0){
            deletepatient();
        }
    }
    return 0;
    
}