#AG1102004. 可重集

可重集

题目描述

有一个可重集 AA。初始时可重集 AA 中只包含一个整数 00

然后会有 qq 次操作,操作分为如下三种类型:

  • + x:添加一个整数 xx 到可重集 AA 中。
  • - x:从可重集 AA 中删除一个数值为 xx 的元素。数据保证在执行该操作时可重集 AA 中包含至少一个数值为 xx 的元素。
  • ? x:从可重集中选择一个整数,使得它与 xx 的异或和最大,并输出这个最大的异或和,即 maxyA(xy)\max\limits_{y \in A} (x \oplus y)

输入格式

第一行,一个整数 qq,表示操作次数。

接下来 qq 行,每行包含一个操作。

输出格式

对于每次查询操作 ? x,输出一行,包含一个整数,表示 maxyA(xy)\max\limits_{y \in A} (x \oplus y)

样例

10
+ 8
+ 9
+ 11
+ 6
+ 1
? 3
- 8
? 3
? 8
? 11
11
10
14
13

说明/提示

数据规模与约定

  • 对于 30%30\% 的数据,q2000,x1000q \le 2000, x \le 1000
  • 对于 100%100\% 的数据,1q2105,1x1091 \le q \le 2 \cdot 10^5, 1 \le x \le 10^9