Chino with Train to the Rabbit Town
题号:NC23867
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习异或。
众所周知,,即“a异或b”表示了ab的二进制按位异或的结果(在C/C++中,表示了异或运算。),它的规则是如果这一位相同为0,否则为1.例如,,因为,根据定义,它们之间的异或值是,下面是异或运算的真值表:

A B
0 0 0
0 1 1
1 0 1
1 1 0

异或还有一些非常有趣的性质,比如之类的。定义很简单,Chino也一下就学会了,那么现在就是作业时间啦!
开往兔子镇的火车一开始还是手摇式的木板车,所有人都在木板上做成一排,当然,就像你想的那样,旅途非常尬。如今,铁路修好了,因此人们可以坐火车来到兔子镇。有一个问题就是怎么划分车厢——大家都希望能够单独一个车厢,但在大部分情况下这是做不到的。
火车上有个乘客,坐在第i位的乘客对车厢的划分有一个意愿值,我们定义一节车厢的总意愿值为这节车厢所有人意愿值的异或和,即,如果这节车厢包含了第名乘客,那么这节车厢的意愿值是.特别地,如果这节车厢只有一名乘客i,那么这节车厢的意愿值就是a_i.这个意愿值当然越高越好,但是这会让当局非常难办,因此他们确定了一个标准kk的范围介于所有可能出现的意愿值之间。现在的任务就是让尽可能多的车厢的意愿值为k.
题目对Chino来说太难啦,你能帮一帮Chino吗?

输入描述:

第一行是两个数n, k;接下来一行是n个数ai

输出描述:

题目中要求的答案
示例1

输入

复制
3 1
1 2 3

输出

复制
2

说明

我们划分成[1]和[2,3]两段,显然每段的异或和都是1.注意,同一位乘客只能被划分在一节车厢中,即,你不能做出类似[1,2],[2,3]的划分