#abc308g. [abc308_g]Minimum Xor Pair Query
[abc308_g]Minimum Xor Pair Query
问题描述
有一块黑板,你可以在上面写整数。初始时,黑板上没有任何整数。给定 个查询,请按顺序处理它们。
查询的类型有三种:
-
1 x
:在黑板上写入 。 -
2 x
:从黑板上擦除 。在执行此查询时,保证黑板上至少有一个 。 -
3
:打印在黑板上写的两个整数的最小可能的异或值。在处理此查询时,保证黑板上至少有两个整数。
什么是异或操作?非负整数 和 的异或操作 定义如下。
- 当将 写成二进制时,如果 和 的二进制在 位()上只有一个为 ,则在 位上为 ,否则为 。
例如,(二进制表示为:)。
约束条件
- 给定查询 时,黑板上至少有一个整数。
- 给定查询 时,黑板上至少有两个整数。
- 所有输入都是整数。
输入
输入以以下格式从标准输入给出:
在第 个查询中,首先给出查询的类型 (取值为 、 或 )。如果 或 ,额外给出一个整数 。
换句话说,每个查询具有以下三种格式之一。
输出
输出 行,其中 是查询中类型为 的查询数量。
第 行()应包含第 个此类查询的答案。
样例输入 1
9
1 2
1 10
3
1 3
3
2 2
3
1 10
3
样例输出 1
8
1
9
0
处理第一个查询后,在黑板上写入了 。
处理第二个查询后,黑板上写入了 和 。
处理第三个查询时,黑板上写的两个整数的最小可能异或值是 。
处理第四个查询后,黑板上写入了 、 和 。
处理第五个查询时,黑板上写的两个整数的最小可能异或值是 。
处理第六个查询后,黑板上写入了 和 。
处理第七个查询时,黑板上写的两个整数的最小可能异或值是 。
处理第八个查询后,黑板上写入了 和两个 。
处理第九个查询时,黑板上写的两个整数的最小可能异或值是 。