#C17. 买月饼

买月饼

题目描述

ZZ特别喜欢吃月饼!所以他经常在家附近的集市买月饼,碰巧这个集市里面卖的都是五仁月饼。集市里有 nn 家店铺,编号为1n1\sim n,第 ii 家店铺的月饼的库存量为 aia_i,即在第 ii 家店铺中小ZZ可以选择购买 0ai0 \sim a_i个月饼(买0个即是不买)。

定义小ZZ的快乐值为在所有店铺买的月饼的数量的异或和,也就是说如果小ZZ在第 ii 个店铺购买了 bib_i个月饼, 那么他的快乐值就等于 $\oplus_{i=1}^n b_i,即b_1 \oplus b_2 \oplus \cdots \oplus b_n$其中\oplus表示按位异或运算。

有一天,他去集市时突然想到了一个问题:如果只在编号为[l,r][l,r]的这一段店铺区间中买月饼,有多少购买方法使得自己的快乐值为 ss ?这个问题很难回答…… 因为小ZZ数学不好。于是,他只好求助聪明的你,来解决这个问题,由于这个答案可能很大,故输出时对 109+710^9 + 7取模。

输入描述

第一行两个正整数 n,q(1n103,1q105)n,q(1\le n \le 10^3, 1\le q \le 10^5),表示分别店铺个数以及询问次数。

第二行 nn 个正整数 ai(1ai103)a_i(1\le a_i \le 10^3),第ii个整数表示第 ii 家店铺中的月饼的库存量。

后面 qq 行,每行三个整数 l,r,s(1lrn,0s103)l, r,s(1 \le l \le r \le n, 0\le s \le 10^3)分别代表询问的一段店铺区间以及快乐值。

输出描述

输出 qq 行,每行一个整数,依次表示询问对应的答案,答案对 109+710^9 + 7取模。

样例输入

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

样例输出

1
2
4
20
40
168