import java.util.*;

public class Main {
    // 使用Java的PriorityQueue实现字典序最小的字符串堆
    static PriorityQueue<String> s = new PriorityQueue<>();
    
    public static void insertValue(String x) {
        // TODO: 实现插入操作
        s.offer(x);
    }

    public static void deleteValue() {
        // TODO: 实现删除操作
        if(!s.isEmpty())s.poll();
    }

    public static String getTop() {
        // TODO: 返回字典序最小的字符串
        return s.peek();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int q = scanner.nextInt();
        while (q-- > 0) {
            int op = scanner.nextInt();
            if (op == 1) {
                String x = scanner.next();
                insertValue(x);
            }
            if (op == 2) {
                System.out.println(getTop());
            }
            if (op == 3) {
                deleteValue();
            }
        }
        scanner.close();
    }
}