D. 生日礼物
单个测试点时间限制:2 秒
单个测试点内存限制:256 兆字节
亚里克的生日快到了,马克准备送给他一个长度为 n 的数组 a。
马克知道亚里克非常喜欢位运算,而且他有一个最喜欢的数字 x。
于是马克想找到最大的 k,满足可以选出如下的区间对:
[l1,r1],[l2,r2],…,[lk,rk]
使得:
- l1=1
- rk=n
- 对所有 i=1…k,有 li≤ri
- 对所有 i=1…k−1,有 ri+1=li+1
- 总按位或满足:
$$(a_{l_1} \oplus a_{l_1+1} \oplus \dots \oplus a_{r_1})
\;\mid\;
(a_{l_2} \oplus a_{l_2+1} \oplus \dots \oplus a_{r_2})
\;\mid\;
\cdots
\;\mid\;
(a_{l_k} \oplus \dots \oplus a_{r_k})
\;\le\; x
$$
其中 ⊕ 表示按位异或,∣ 表示按位或。
如果不存在这样的 k,输出 −1。
输入格式
输入包含多组测试数据。
第一行一个整数 t(1≤t≤104),表示测试用例数量。
每组测试用例:
第一行两个整数 n 和 x(1≤n≤105,0≤x<230)。
第二行 n 个整数 a1,a2,…,an(0≤ai<230)。
保证所有测试用例的 n 之和不超过 105。
输出格式
对于每组测试用例,输出一行一个整数,表示最大的合法 k;若无解则输出 −1。
样例输入
8
3 1
1 2 3
2 2
1 1
2 2
1 3
2 3
0 0
3 2
0 0 1
4 2
1 3 3 7
2 2
2 3
5 0
0 1 2 2 1
样例输出
2
2
1
2
3
-1
1
2