#348. 异或

异或

题目描述

给定长度为 nn 的序列 aa , 你需要计算有多少组不同的 (i,j,k,l)(i,j,k,l) 满足:

  1. i<j<k<li<j<k<l 且是 [1,n][1,n] 间的整数。

  2. aiajakal=0a_i\oplus a_j\oplus a_k\oplus a_l=0 ,这里 \oplus 是异或运算。

为了降低难度,我们给出 mm ,令以上答案是 AA ,你只需要输出 min(A,m)\min (A,m) 即可。

保证对于 iji\neq jaiaja_i\neq a_j

输入格式

第一行包含两个整数 n,mn,mnn 表示序列 aa 的长度,mm 含义如题目描述所示。

第二行包含 nn 个整数,第 ii 个整数表示 aia_i

输出格式

一行一个整数,表示 min(A,m)\min(A,m)

样例

样例输入

8 100
1 2 3 4 5 6 7 8

样例输出

7

数据范围

对于所有数据,1n,m105,0ai<2181 \le n,m\le 10^5,0\le a_i<2^{18} ,对于 ij,aiaji\neq j,a_i\neq a_j

子任务 1 ( 20% ) : n100n\le 100

子任务 2 ( 30% ) : n500n\le 500

子任务 3 ( 20% ) : n3000n\le 3000

子任务 4 ( 30% ) : 无特殊限制。