Description
给定长为 n n n 的序列 a = ( a 1 , a 2 , ⋯ , a n ) a=(a_1,a_2,\cdots,a_n) a=(a1,a2,⋯,an),有 m m m 个操作,分以下两种:
- modify ( l , r , k ) \operatorname{modify}(l,r,k) modify(l,r,k):对于每个 i ∈ [ l , r ] i \in [l,r] i∈[l,r] 执行 a i ← a i xor k a_i \leftarrow a_i \operatorname{xor} k ai←aixork
- query ( l , r , k ) \operatorname{query}(l,r,k) query(l,r,k):求 max b ⊆ a l ⋯ r { xor j ∈ b j } xor k \max\limits_{b \subseteq a_{l\cdots r}} \{ \mathop{\operatorname{xor}}\limits_{j\in b} j \}\operatorname{xor}k b⊆al⋯rmax{ j∈bxorj}xork.
Limitations
1 ≤ n , m ≤ 5 × 1 0 4 1 \le n,m \le 5 \times 10^4 1≤n,m≤5×104
1 ≤ l ≤ r ≤ n 1 \le l \le r \le n