【模板】普通平衡树(数据加强版)

题目背景

本题是 P3369 数据加强版,**扩大数据范围**并增加了**强制在线**。 **题目的输入、输出和原题略有不同**,但需要支持的操作相同。

题目描述

您需要动态地维护一个可重集合 $M$,并且提供以下操作: 1. 向 $M$ 中插入一个数 $x$。 2. 从 $M$ 中删除一个数 $x$(若有多个相同的数,应只删除一个)。 3. 查询 $M$ 中有多少个数比 $x$ 小,并且将得到的答案加一。 4. 查询如果将 $M$ 从小到大排列后,排名位于第 $x$ 位的数。 5. 查询 $M$ 中 $x$ 的前驱(前驱定义为小于 $x$,且最大的数)。 6. 查询 $M$ 中 $x$ 的后继(后继定义为大于 $x$,且最小的数)。 本题**强制在线**,保证所有操作合法(操作 $2$ 保证存在至少一个 $x$,操作 $4,5,6$ 保证存在答案)。

输入输出格式

输入格式


第一行两个正整数 $n,m$,表示**初始数的个数**和操作的个数。 **第二行 $n$ 个整数 $a_1,a_2,a_3,\ldots,a_n$,表示初始的数**。 接下来 $m$ 行,每行有两个整数 $\text{opt}$ 和 $x'$,$\text{opt}$ 表示操作的序号($ 1 \leq \text{opt} \leq 6 $),$x'$ 表示加密后的操作数。 我们记 $\text{last}$ 表示上一次 $3,4,5,6$ 操作的答案,则每次操作的 $x'$ 都要**异或**上 $\text{last}$ 才是真实的 $x$。初始 $\text{last}$ 为 $0$。

输出格式


输出一行一个整数,表示所有 $3,4,5,6$ 操作的答案的**异或和**。

输入输出样例

输入样例 #1

6 7
1 1 4 5 1 4
2 1
1 9
4 1
5 8
3 13
6 7
1 4

输出样例 #1

6

说明

### 样例解释 样例加密前为: ```plain 6 7 1 1 4 5 1 4 2 1 1 9 4 1 5 9 3 8 6 1 1 0 ``` ### 限制与约定 对于 $100\%$ 的数据,$1\leq n\leq 10^5$,$1\leq m\leq 10^6$,$0\leq a_i,x\lt 2^{30}$。 **本题输入数据较大,请使用较快的读入方式。** --- $\text{upd 2022.7.22}$:新增加 $9$ 组 Hack 数据。