#cpsco2019s1e. [cpsco2019_s1_e]Exclusive OR Queries

[cpsco2019_s1_e]Exclusive OR Queries

問題文

長さ NN の整数列 A1,A2,ldots,ANA_1, A_2, \\ldots, A_N があります。以下の QQ 個のクエリを順番に処理してください。

  • 値が LiL_i 以上 RiR_i 以下である要素をすべて選び、それらの排他的論理和を答える。その後、選んだ要素をすべて XiX_i に更新する。 ただし、LiL_i 以上 RiR_i 以下の整数が 11 つも存在しない場合の答えは 00 とする。

排他的論理和とは

整数 c1,c2,...,cnc_1, c_2, ..., c_n の排他的論理和 XX は、以下のように定義されます。

  • XX を二進数表記したときの 2k2^k (kge0k \\ge 0) の位の値は、c1,c2,...,cnc_1, c_2, ..., c_n のうち、二進数表記したときの 2k2^k の位の値が 11 となるものが奇数個ならば 11、偶数個ならば 00 である。

例えば、3355 の排他的論理和は 66 です(二進数表記すると: 011101 の排他的論理和は 110 です)。

制約

  • 1leNle3times1051\\le N\\le 3\\times 10^5
  • 1leQle2times1051\\le Q\\le 2\\times 10^5
  • 0leAile1090\\le A_i\\le 10^9
  • 0leLileRile1090\\le L_i\\le R_i\\le 10^9
  • 0leXile1090\\le X_i\\le 10^9
  • 入力はすべて整数

入力

入力は以下の形式で標準入力から与えられます。

NQN\\ Q A1A2ldotsANA_1\\ A_2\\ \\ldots\\ A_N L1R1X1L_1\\ R_1\\ X_1 L2R2X2L_2\\ R_2\\ X_2 vdots\\vdots LQRQXQL_Q\\ R_Q\\ X_Q

出力

QQ 行出力してください。 ii (1leileQ)(1\\le i\\le Q) 行目には ii 番目のクエリに対する答えを出力してください。


入力例 1

5 2
7 4 1 5 9
7 10 2
2 8 5

出力例 1

14
1
  • 11 つめのクエリでは、77 以上 1010 以下の整数は 779922 つなのでこれらの排他的論理和の 1414 を出力します。 その後この 22 つを 22 に更新して、数列は 2,4,1,5,2\\{2,4,1,5,2\\} になります。
  • 22 つめのクエリでは、22 以上 88 以下の整数は 2,4,5,22, 4, 5, 244 つなのでこれらの排他的論理和の11 を出力します。 その後この 44 つを 55 に更新して、数列は 5,5,1,5,5\\{5,5,1,5,5\\} になります。

入力例 2

1 1
5
1 3 2

出力例 2

0

条件をみたす AiA_i が存在しない場合の答えは 00 です。このときは更新も行われません。


入力例 3

15 10
76 87 42 60 30 58 52 82 42 13 81 8 97 5 87
4 11 92
56 60 68
90 100 24
30 35 15
12 17 53
24 32 31
0 6 85
74 82 55
69 72 30
50 61 49

出力例 3

13
6
97
30
2
24
0
79
0
3