Cycle XOR Walk

問題文

NN 頂点 NN 辺の有向グラフがある。 このグラフの辺 ii は 頂点 ii から頂点 i+1i+1(1iN)(1 \leq i \leq N) 繋いでいる。 (辺 NN は頂点 NN から 頂点11へ繋いでいるものとする。) また、各頂点には 重み があり、頂点 ii の重みは WiW_i である。

次の QQ 個のクエリに答えよ。(1jQ)(1 \leq j \leq Q)

  • 頂点 sjs_j から tjt_j への walk のうち、 walk に含まれる頂点の重みのビット単位 XORXOR の最大値を求めよ。

- 頂点 sjs_j から tjt_j への walkとは

直感的には、「頂点 sjs_j から tjt_j への経路であって、 同じ頂点や同じ辺を複数回通っても良いもの」である。 walk に含まれる頂点とは、頂点の列 (v1,...,vk)(v_1,...,v_k) であって、以下の条件を全て満たすものである。

  • v1=sjv_1 = s_j である。
  • 全ての (1ik1)(1 \leq i \leq k-1) について、頂点 viv_i と頂点 vi+1v_{i+1} を繋ぐ辺が存在する。
  • vk=tjv_k = t_j である。

- ビット単位 XORXOR 演算とは

非負整数 A,BA,B のビット単位 XORXOR である AA XORXOR BB は、以下のように定義される。

  • AA XORXOR BB を2進表記した際の 2k(k0)2^k(k \leq 0) の位の数は、 A,BA,B を2進表記した際の 2k2^k の位の数のうち一方のみが 11 であれば 11、 そうでなければ 00である。

例えば、3XOR5=63 XOR 5 = 6 である。(二進表記:011XOR101=110011 XOR 101 = 110)

一般に kk 個の非負整数 p1,p2,p3,...,pkp_1,p_2,p_3,...,p_k のビット単位 XORXOR(...((p1XORp2)XORp3)XOR...XORpk)(...((p_1 XOR p_2) XOR p_3) XOR ... XOR p_k) と定義され、これは p1,p2,p3,...,pkp_1,p_2,p_3,...,p_kの順番によらないことが証明できる。

制約

  • 2N1052 \leq N \leq 10^{5}
  • 0Wi<230(1iN)0 \leq W_i < 2^{30}(1 \leq i \leq N)
  • 1Q1051 \leq Q \leq 10^{5}
  • 1sj,tjN(1jQ)1 \leq s_j,t_j \leq N(1 \leq j \leq Q)
  • sjtjs_j \neq t_j

入力

入力はすべて整数である。

N
W_1 W_2 ... W_N
Q
s_1 t_1
s_2 t_2
...
s_Q t_Q

出力

各クエリ 1jQ1 \leq j \leq Q について、頂点 sjs_j から tjt_j への walk のうち、 walk に含まれる頂点の重みのビット単位 XORXOR の最大値を1行づつ出力せよ。

サンプル

入力1
4
1 2 4 0
1
1 3
出力1
7

例えば 1231 \rightarrow 2 \rightarrow 3 と移動すると、 この walk に含まれる頂点の重みのビット単位 XORXOR1XOR2XOR4=71 XOR 2 XOR 4 = 7 となります。 これよりも頂点の重みのビット単位 XORXOR の値を大きくすることはできないので、 77 を出力します。このような walk は他にも、123412341231 \rightarrow 2 \rightarrow 3 \rightarrow 4 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 4 \rightarrow 1 \rightarrow 2 \rightarrow 3 などが考えられます。

入力2
5
16 17 3 4 8
2
1 3
2 3
出力2
12
28
入力3
6
55 17 30 42 18 76
3
1 3
2 6
5 4
出力3
116
123
76

Submit


Go (1.21)