幽幽子的魔法宴会
时间限制:C/C++/Rust/Pascal 4秒,其他语言8秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}好多牛牛进入了幻想乡,这是一场异变!但是乐园的巫女已经不想自己出马了,于是诱导他们去了幽冥结界。
\hspace{15pt}而幽幽子在白玉楼已经准备了一场宴会,而牛牛们的到来让她和妖梦更加高兴。她们邀请你一起加入宴会!
\hspace{15pt}幽幽子想要吃很多很多东西!现在幽幽子的面前有 n 盘食物,第 i 盘食物有一个饱食度 a_i,幽幽子能获得的满足感即是她吃掉的所有食物的饱食度之和,她希望可以至少获得 y 点满足感,所以她决定偷偷使用魔法!她可以最多使用一次魔法(也可以不使用),魔法的效果如下:
\hspace{23pt}\bullet\,花费 x 点魔力值,任选若干盘食物,使得它们的饱食度异或上 x
\hspace{15pt}幽幽子很懒,所以她希望使用的魔力值最小,请你帮助幽幽子计算她需要使用的魔力值最小是多少。

\hspace{15pt}在本题中,异或运算即按位异或运算。如果您需要更多位运算相关的知识,可以参考 百度百科:异或

输入描述:

\hspace{15pt}每个测试文件均包含多组测试数据。第一行输入一个整数 T\left(1\leq T\leq 2 \times 10^4\right) 代表数据组数,每组测试数据描述如下:
\hspace{15pt}第一行输入两个整数 n,y \left(1\leq n \leq 2 \times 10^5;\ 1\leq y \leq 10^{18}\right) 代表食物的盘数、幽幽子希望获得的满足感。
\hspace{15pt}第二行输入 n 个整数 a_1,a_2,\dots,a_n \left(0\leq a_i \leq 2 \times 10^9\right),其中,第 i 个整数 a_i 代表第 i 盘食物的饱食度。

\hspace{15pt}除此之外,保证单个测试文件的 n 之和不超过 2 \times 10^5

输出描述:

\hspace{15pt}对于每组测试数据,新起一行。输出一个整数,代表幽幽子需要使用的魔力值最小是多少。

\hspace{15pt}我们可以证明,在 long long(2^{63})范围内答案一定存在。
示例1

输入

复制
2
2 6
5 0
3 7
1 2 1

输出

复制
1
2

说明

\hspace{15pt}对于第一组测试数据,如果不使用魔法,那么幽幽子只能得到 5+0=5 点满足感,所以,她一定需要使用魔法。假设需要使用 1 点魔法,有以下三种施展方案:
\hspace{23pt}\bullet\,同时对第一、二盘食物操作,其饱食度分别变为 5 \operatorname{xor} 1=40 \operatorname{xor} 1=1,此时幽幽子可以得到 4+1=5 点满足感,依旧不满足条件。
\hspace{23pt}\bullet\,只对第一盘食物操作,其饱食度变为 5 \operatorname{xor} 1=4,此时幽幽子可以得到 4+0=4 点满足感,依旧不满足条件;
\hspace{23pt}\bullet\,只对第二盘食物操作,其饱食度变为 0 \operatorname{xor} 1=1,此时幽幽子可以得到 5+1=6 点满足感,满足条件。
\hspace{15pt}综上,幽幽子至少需要使用 1 点魔力值、且只对第二盘食物操作。

\hspace{15pt}对于第二组测试数据,如果不使用魔法,那么幽幽子只能得到 1+2+1=4 点满足感,所以,她一定需要使用魔法。从小到大分析不同的魔力值带来的效果:
\hspace{23pt}\bullet\,使用 1 点魔力值,最优的操作策略是将第二盘食物的饱食度变为 2 \operatorname{xor} 1=3,此时幽幽子可以得到 1+3+1=5 点满足感,依旧不满足条件;
\hspace{23pt}\bullet\,使用 2 点魔力值,最优的操作策略是将第一、三盘食物的饱食度变为 1 \operatorname{xor} 2=3,此时幽幽子可以得到 3+2+3=8 点满足感,满足条件。
\hspace{15pt}综上,幽幽子至少需要使用 2 点魔力值。
示例2

输入

复制
7
5 68
16 5 20 1 11
5 77
16 5 20 1 11
5 102
16 5 20 1 11
20 2025
95 67 1 42 36 99 56 35 52 6 63 84 47 44 59 39 76 73 11 88
8 512
1 4 64 128 256 4 2 2
8 1024
1 4 64 128 256 4 2 2
8 2025
1 4 64 128 256 4 2 2

输出

复制
8
8
18
128
8
81
244