#Lutece1825. 柱爷搞搞搞搞搞xxxxoooorrrrr(Legendary Version. Vol 1)

柱爷搞搞搞搞搞xxxxoooorrrrr(Legendary Version. Vol 1)

Migrated from Lutece 1825 柱爷搞搞搞搞搞xxxxoooorrrrr(Legendary Version. Vol 1)

All parts of this problem, including description, images, samples, data and checker, might be broken. If you find bugs in this problem, please contact the admins.

Description

给你NN个限制条件Limit[i]Limit[i],表示第ii个数的取值范围在[0,Limit[i]][0,Limit[i]]内,现在柱爷想知道有多少种取值方法能使这些数异或起来等于KK

当然柱爷早就知道了答案,柱爷现在想问你知道吗

Input

输入第一行有两个整数NNKK.(1N105,0K109)( 1 \leq N \leq 10^5 , 0 \leq K \leq 10^9 )

第二行有NN个整数,表示Limit[i]Limit[i].(0Limit[i]109)( 0 \leq Limit[i] \leq 10^9 )

Output

输出一行表示答案对109+710^9+7取模后的值

Samples

3 0
1 2 3
6

Note

柱爷:你能很轻易的设计出复杂度为O(i=1n(Limit[i]+1))O(\prod_{i=1}^n(Limit[i]+1))的算法

Resources

每周一题 Div4