[Ynoi2013] 无力回天 NOI2017

题目描述

给你一个长度为 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 和是多少。

输入输出格式

输入格式


第一行有两个正整数 $n,m$。 第二行有 $n$ 个整数表示给你的序列。 之后 $m$ 行每行有四个整数 $opt, l, r, v$表示一个操作。

输出格式


对于每个 $opt=2$ 的操作,输出一行一个数表示答案~

输入输出样例

输入样例 #1

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

输出样例 #1

61
63
560

说明

Idea:nzhtl1477,Solution:nzhtl1477,Code:nzhtl1477,Data:nzhtl1477 对于 $100\%$ 的数据,满足 $1 \le n , m \le 5 \times 10^4$,值域在 $[0,10^9]$ 之间