2.K优先队列(queue)

2.K优先队列(queue)

Description

你需要维护一个队列,支持以下两种操作:
1.加入一个非负整数x;
2.取出当前队列中第k大的数字。
保证进行第二种操作时,队列中至少有k个数字。
部分数据经过加密,你需要依次处理每个操作才能获得正确的下一个操作。

Format

Input

第一行包括三个非负整数n,k,p,分别表示操作次数,参数k以及数据是否进行过加密。
接下来n行,每行先给出一个数opt,表示操作类型。
若opt=1,接下来还会有一个非负整数x;
若p=0,表示往队列中加入x;若p=1,表示往队列中加入x异或上前一次出队操作取出的数字后得到的结果,如果还未进行过出队操作,把前一次取出的数字看作0。若opt=2,表示要求取出并输出当前队列中第k大的数字。

Output

对于每一个出队操作,输出一个正整数表示答案。

Sample 1

Input

5 2 1
1 2
1 3
2
1 3
2

Output

2
1

Limitation

1s, 32MiB for each test case.
对于前20%的数据,k=1。
对于前40%的数据,k<=10。
对于另外30%的数据,p=0。
对于100%的数据,1<=k<=n<=2*10^5,0<=x<=10^9。