编程题
### 问题描述
现在小帅在写一道数据结构的题,他发现某个地方需要用到对一个多重集的增、删和查某个数比它小的数有多少,他毫不犹豫地使用上了g++库里面带的树,"__gnu_pbds","rb_tree_tag","tree_order_statistics_node_update"一大串长长的名字。很快啊,提交题目,然后超过时间限制了。
又思考之后发现它好像用不了库自带的数据结构,现在小帅给小美描述他需要的数据结构:
1.往多重集加入若 $ y $ 个数 $ x $ 。
2.往多重集删除若 $ y $ 个数 $ x $ 。
3.查询小于数 $ x $ 的个数 $+1$ (就是查询,如果数 $ x $ 放入多重集里面,它是第几小)。
4.查询第 $ x $ 小的数是哪个。
### 输入格式
第一行输入一个数 $ n $ ,表示操作次数。
接下来 $ n $ 行,首先一个整数 $ op(1 \leq op \leq 4) $ ,表示上面的操作种类。
接下来如果 $ op $ 是 $ 1 $ 或 $ 2 $ ,那么还要输入两个数表示 $ x $ 和 $ y $ ,否则还要输入一个数表示 $ x $ 。
### 输出格式
对于每个 $3$ 、 $4$ 的操作,输出查询的结果
### 样例输入
```text
13
1 1 10
3 1
1 2 10
3 2
4 10
4 11
4 19
4 20
4 1
2 2 9
1 3 5
4 11
4 12
```
### 样例输出
```text
1
11
1
2
2
2
1
2
3
```
### 评测数据规模
$ 1 \leq n \leq 10^5,|x| \leq 10^7,1\leq y \leq 10^4 $