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();
}
}