题目描述
薯条哥拿到了一个长度为n的数组a,下标从1开始,q次询问(op,l,r)。
op=1, 计算al&al+1∣al+2&al+3∣al+4...ar 的值。以&开始,交替&∣。
op=2,计算al∣al+1&al+2∣a1+3&a1+4...ar 的值。以∣开始,交替∣&。
例如
询问 (1,3,9),计算a3&a4∣a5&a6∣a7&a8∣a9。
询问(2,3,9),计算a3∣a4&a5∣a6&a7∣a8&a9
本题的&和∣不区分优先级,从左往右计算。
a∣b表示a按位或b(按位或运算符"|"
是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的两个二进位有一个为1时,结果位就为1)。
a&b表示a按位与b(按位与运算符"&"
是双目运算符。其功能是参与运算的两数各对应的二进位相与。只要对应的两个二进位两个都为1时,结果位就为1)。
输入描述
第一行包含两个整数n,q(1≤n,q≤2×105),表示数组大小和询问个数。
第二行包含n个整数ai(0≤ai≤230),表示数组a。
接下来q行,每行包含三个整数op,l,r(1≤op≤2,1≤l≤r≤n),表示询问。
输出描述
输出包含q行,每行包含一个整数,分别表示每次询问结果。
样例
输入
5 2
1 2 3 4 5
1 2 3
2 2 4
输出
2
0
样例解释
op=1,l=2,r=3对应2&3,答案为2。
op=2,l=2,r=4对应2∣3&4,答案为0。