输出
#include <iostream>
#include <algorithm>
#include <cstring>
#include <bitset>
using namespace std;
const int N=1050;
int n,m;
bitset<N> f[N],g[N];
void init(){
for(int i=0;i<=1024;i++){
f[i].reset();
}
f[0][0]=1;
}
int main(){
int t;
cin>>t;
while(t--){
cin>>n>>m;
init();
for(int i=0;i<n;i++){
int v,m1;
cin>>v>>m1;
for(int j=0;j<1024;j++){
g[j]=f[j];
g[j]<<=v;//此时g为初状态
}
for(int j=0;j<1024;j++){
f[j]|=g[j^m1];//此时f为末状态也就是(j^m1)^m1==j 注:“()”内为初状态
}
}
int ans=-1;
for(int i=0;i<1024;i++){
if(f[i][m]) ans=i;
}
cout<<ans<<endl;
}
return 0;
}