import java.util.*;
public class Main {
public static TreeMap<Integer,Integer> set = new TreeMap<>();
//TreeMap自动排序
public static int len = 0;
public static void insertValue(int x) {
// TODO: 实现插入逻辑
set.put(x,set.getOrDefault(x,0)+1);
//getOrDefault和get区别在于,x不存在get返回null,前者返回指定值 这里指定为0
len++;
}
public static void eraseValue(int x) {
// TODO: 实现删除逻辑
if(set.containsKey(x)){
int count = set.get(x);
if(count==1){
set.remove(x);
}
else{
set.put(x,count-1);
}
len--;
}
}
public static int xCount(int x) {
return set.getOrDefault(x,0);
}
public static int sizeOfSet() {
// TODO: 返回集合大小
return len;
}
public static int getPre(int x) {
// TODO: 实现找前驱
Integer pre = set.lowerKey(x);
return pre==null?-1:pre;
}
public static int getBack(int x) {
// TODO: 实现找后继
Integer next = set.higherKey(x);
return next==null?-1:next;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int q = scanner.nextInt();
while (q-- > 0) {
int op = scanner.nextInt();
switch (op) {
case 1:
insertValue(scanner.nextInt());
break;
case 2:
eraseValue(scanner.nextInt());
break;
case 3:
System.out.println(xCount(scanner.nextInt()));
break;
case 4:
System.out.println(sizeOfSet());
break;
case 5:
System.out.println(getPre(scanner.nextInt()));
break;
case 6:
System.out.println(getBack(scanner.nextInt()));
break;
}
}
scanner.close();
}
}