#include <stdio.h>
#include <stdlib.h>
#define MAX 1000

int queue[MAX], qsize = 0;
int templist[MAX], tsize = 0;
int lastProcessed = -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=i+1; j<n; j++) {
            if (arr[i] > arr[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;
    if (lastProcessed == -1 || queue[1] >= lastProcessed) {
        lastProcessed = queue[1];
        printf("%d\n",queue[1]);
        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\n");
            return 0;
        }
        for (int i = 0; i<N; i++) {
            int op;
            if (scanf("%d",&op) !=1 || op <1||op >3) {
                printf("Invalid input\n");
                return 0;
            }
            if (op == 1){
                int x;
                if (scanf("%d", &x) !=1|| x<1||x>10000) {
                    return 0;
                }
                enqueue(x);
            }
            else if (op == 2) {
                processNext();
            }
            else if (op == 3){
                printloads();
            }
        }
            return 0;
}