菜菜子是一个可爱的男孩子。
有一天菜菜子发现自己女装很可爱,于是就变成可爱的女孩子了。
因为女装可以让自己idea变多,于是菜菜子有了很多idea。
因为菜菜子很可爱,所以菜菜子出了一个简单的数据结构题给你做:
给你一个长度为 $n$ 的整数序列 $a_1, a_2, \ldots, a_n$,你需要实现以下两种操作,每个操作都可以用四个整数 $opt\ $$l\ r\ v$ 来表示:$opt=1$ 时,代表把一个区间 $[l, r]$ 内的所有数都 $xor$ 上 $v$。$opt=2$ 时, 查询一个区间 $[l, r]$ 内选任意个数(包括 $0$ 个)数 $xor$ 起来,这个值与 $v$ 的最大 $xor$ 和是多少。以上的 xor 指的是異或操作。
给你一个长度为 $n$ 的整数序列 $a_1, a_2, \ldots, a_n$,你需要实现以下两种操作,每个操作都可以用四个整数 $opt\ $$l\ r\ v$ 来表示:
以上的 xor 指的是異或操作。
第一行有两个正整数 $n, m$。
第二行有 $n$ 个整数表示给你的序列 $a_1, a_2, \ldots, a_n$。
之后 $m$ 行每行有四个整数 $opt, l, r, v$ 表示一个操作。
所有的數據都滿足 $n = m = 5 \times 10^4$,$1 \le l \le r \le n$,以及 $0 \le a_i \le 10^9$。(但仍使用 $n,m$ 值较小的样例来做解释。)
对于每个 $opt=2$ 的操作,输出一行一个数表示答案。
4 5 1 14 51 4 2 1 3 0 1 2 3 3 2 1 4 10 1 1 4 514 2 3 4 2
61 63 560
样例解释:
第一次询问时,区间 $[1, 3]$ 内的数是 $[1, 14, 51]$,选出 $14, 51$ 的 $xor$ 和是 $61$,这个数和 $0$ 的 $xor$ 和最大,为 $61$。
第二次修改后序列变成了 $[1, 13, 48, 4]$。
第三次询问时,区间 $[1, 4]$ 内的数是 $[1, 13, 48, 4]$,选出 $1, 13, 48$ 的 $xor$ 和是 $60$,这个数和 $3$ 的 $xor$ 和最大,为 $63$。
第四次修改后序列变成了 $[515, 527, 562, 518]$。
第五次询问时,区间 $[3, 4]$ 内的数是 $562,518$,选出 $562$ 的 $xor$ 和是$562$,这个数和 $2$ 的 $xor$ 和最大,为 $560$。