#P1490. 交替与或

交替与或

题目描述

薯条哥拿到了一个长度为nn的数组aa,下标从11开始,qq次询问(op,l,r)(op,l,r)

op=1op=1, 计算al&al+1al+2&al+3al+4...ara_l\& a_{l+1}| a_{l+2} \& a_{l+3} | a_{l+4}...a_r 的值。以&\&开始,交替&\&|

op=2op=2,计算alal+1&al+2a1+3&a1+4...ara_l | a_{l+1} \& a_{l+2}|a_{1+3}\&a_{1+4}...a_r 的值。以|开始,交替&|\&

例如

询问 (1,3,9)(1,3,9),计算a3&a4a5&a6a7&a8a9a_3\&a_4|a_5\&a_6|a_7\&a_8|a_9

询问(2,3,9)(2,3,9),计算a3a4&a5a6&a7a8&a9a_3|a_4\&a_5|a_6\&a_7|a_8\&a_9

本题的&\&|不区分优先级,从左往右计算。

aba|b表示aa按位或bb(按位或运算符"|"是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的两个二进位有一个为11时,结果位就为11)。

a&ba\&b表示aa按位与bb(按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只要对应的两个二进位两个都为11时,结果位就为11)。

输入描述

第一行包含两个整数n,q(1n,q2×105)n,q(1\le n,q\le 2×10^5),表示数组大小和询问个数。

第二行包含nn个整数ai(0ai230)a_i(0\le a_i\le 2^{30}),表示数组aa

接下来qq行,每行包含三个整数op,l,r(1op2,1lrn)op, l, r(1\le op\le 2,1\le l\le r\le n),表示询问。

输出描述

输出包含qq行,每行包含一个整数,分别表示每次询问结果。

样例

输入

5 2
1 2 3 4 5
1 2 3
2 2 4

输出

2
0

样例解释

op=1,l=2,r=3op=1,l=2,r=3对应22&33,答案为22

op=2,l=2,r=4op=2,l=2,r=4对应232|3&44,答案为00