题目描述
小 R 有一个长度为 n 的非负整数序列 a1..an。定义一个区间 [l, r] 的权值为 al, a(l+1), ..., ar 的二进制按位异或和,即 al ⊕ a(l+1) ⊕ ... ⊕ ar。
小 X 给了小 R 一个非负整数 k。小 X 希望小 R 选择序列中尽可能多的不相交的区间,使得每个区间的权值均为 k。两个区间相交当且仅当它们同时包含至少一个相同的下标。
例如,对于序列 [2, 1, 0, 3],若 k = 2,可以选择区间 [1, 1] 和 [2, 4],权值分别为 2 和 1 ⊕ 0 ⊕ 3 = 2。
求小 R 能选出的区间数量的最大值。
本题原评测使用文件输入输出(xor.in / xor.out),本站改为标准输入输出。
输入格式
第一行包含两个非负整数 n, k。
第二行包含 n 个非负整数 a1..an,表示小 R 的序列。
输出格式
输出一行一个非负整数,表示能选出的区间数量的最大值。
样例输入
4 2
2 1 0 3
样例输出
2
提示
对于所有测试数据,保证:
- 1 ≤ n ≤ 5 × 10^5,0 ≤ k < 2^20;
- 0 ≤ ai < 2^20。