题号:NC245538
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld
题目描述
小

特别喜欢吃胖头鱼!所以他经常在家附近的鱼市买鱼,碰巧这个鱼市里面卖的都是胖头鱼。鱼市里有

家店铺,编号为

,第

家店铺的鱼的库存量为

,即在第

家店铺中小

可以选择购买
条鱼(买
条即是不买)。
定义小

的快乐值为在所有店铺买的鱼的数量的异或和,也就是说如果小

在第

个店铺购买了
条鱼, 那么他的快乐值就等于

,即

,其中

表示按位异或运算。
有一天,他去鱼市时突然想到了一个问题:如果只在编号为

的这一段店铺区间中买鱼,有多少购买方法使得自己的快乐值为

?这个问题很难回答…… 因为小

数学不好。于是,他只好求助聪明的你,来解决这个问题,由于这个答案可能很大,故输出时对

取模。
输入描述:
第一行两个正整数
,表示分别店铺个数以及询问次数。
第二行
个正整数
,第
个整数表示第
家店铺中的鱼的库存量。
后面
行,每行三个整数
, 分别代表询问的一段店铺区间以及快乐值。
输出描述:
输出
行,每行一个整数,依次表示询问对应的答案,答案对
取模。
示例1
输入
复制
6 6
1 1 4 5 1 4
1 1 0
1 2 0
1 3 0
1 4 0
1 5 0
1 6 0