给定一个正整数数组构造二进制数 n
,计算 (n XOR (n >> 1)) % m
。其中二进制数的构造规则为:数组中第 i
个元素表示连续 a_i
个 i%2
的二进制位(从高位到低位排列)。
n XOR (n >> 1)
的二进制中,只有相邻位不同的位置会产生1对于给定的正偶数n和正整数m,求解下式:
n xor2nmod m
这显然难不倒你,所以,我们将会使用一种特殊的方式给出n的二进制形式:给出一个由k个整数构成的数组{a1,a2,...,ak},其中,第i个整数ai代表n的二进制表示中,从高位到低位,恰好有连续ai个ai mod 2。更具体地,如果数组a={3,4,1,2},那么,第一个整数a1就代表有3 个3 mod 2=1,第二个整数a2就代表有4 个4 mod 2=0,......。最终,可以得到n的二进制表示为1110000100。
第一行输入两个整数 k,m(1≦k≦2×105;1≦m≦109)。
第二行输入k个正整数a1,a2,...,ak(1≦ai≦109)。
除此之外,保证单个测试文件的ai之和不超过109。
输出一个十进制整数,代表式子的最终答案.
输入
4 15
3 4 1 2
输出
12