#include<stdio.h>
#include<stdio.h>
#define max 1000
int queue[max],qsize = 0;
int templist = -1;
int lastpro = -1;

void enqueue(int x){
    queue[qsize++] = x;
}

void sort(int arr[],int n){
    for(int i=0; i<n-1;i++){
        for(int j=j+1;j<n;j++){
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
    }
}

void processnext(){
    if(qsize == 0){
        printf("0\n");
        return;
    }
    sort(queue,qsize);
    int found = 0;
    for(int i = 0;i < qsize;i++){
        if(lastpro == -1 || queue[i] >= lastpro){
            lastpro = queue[i];
            printf("%d\n",queue[i]);
            for(int j = i;j< qsize-1;j++){
                queue[j] = queue[j+1];
            }
            qsize--;
            found = 1;
            break
        }
    }
    if(!found){
        for(int i=0; i<qsize;i++){
            templist[tsize++] = queue[i];
        }
        qsize = 0;
        printf("0\n");
    }
}

void printloads(){
    if(qsize == 0 && tsize == 0){
        printf("0\n");
        return;
    }
    int all[max*2],n=0;
    for(int i=0;i<qsize;i++) all[n++] = queue[i];
    for(int i=0;i<tsize;i++) all[n++] = templist[i];
    sort(all,n);
    for(int i=0;i<n;i++){
        printf("%d",all[i]);
        if(1<n-1) printf(" ");
    }
    printf("\n");
}
int main(){
    int n;
    if(scanf("%d,&n") !=1 || n<1||n>max){
        printf("Invalid input");
        return 0;
    }
    for(int i=0;i<n;i++){
        int op;
        if(scanf("%d,&op") !=op||op<1||op>3){
            printf("Invalid input");
            return 0;
        }
        if(op == 1){
            int x;
            if(scanf("%d,&x")x<1||x>1000){
                printf("Invalid input");
                return 0;
            }
            enqueue(x);
        }
        else if(op == 2){
            processnext();
        }
        else if(op == 3){
            printloads();
        }
    }
    return 0;
}