// // main.cpp // B // // Created by 黄宇凡 on 16/3/5. // Copyright © 2016年 黄宇凡. All rights reserved. // #include #include #include #include #include using namespace std; const int maxn=16; int a[maxn]; int n,m; int T; const int maxm=1e5+10; const int INF=0x3f3f3f3f; const long long mod=1e9+7; int s[maxm*2]; int main(int argc, const char * argv[]) { scanf("%d",&T); while(T--){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++){ scanf("%d",a+i); } //memset(s,-1,sizeof(s)); memset(s,-1,sizeof(s)); queueq; s[0]=0; q.push(0); while(!q.empty()){ int u=q.front();q.pop(); for(int i=1;i<=n;i++){ int v=(u^a[i]); if(v<=200000&&s[v]==-1){ s[v]=s[u]+1; q.push(v); } } for(int i=0;i<20;i++){ int v=(u^(1<