#include<iostream> #include<cstring> #include<cstdio> using namespace std; typedef long long LL; int tree[32*100005][2]; LL val[32*100005]; int tot; void First() { memset(tree[0],0,sizeof(tree[0])); tot=1; } void insert(LL x) { int root=0; for(int i=32;i>=0;i--) { int bit=(x>>i)&1; if(tree[root][bit]==0) { memset(tree[tot],0,sizeof(tree[tot])); /*val[tot]=0;*/ tree[root][bit]=tot++; } root=tree[root][bit]; } val[root]=x; } LL xor_que(LL x) { int root=0; for(int i=32;i>=0;i--) { int bit=(x>>i)&1; if(tree[root][bit^1]) root=tree[root][bit^1]; else root=tree[root][bit]; } return val[root]; } int main() { int T,n,m,g=0; LL x,k; cin>>T; while(T--) { g++; First(); scanf("%d %d",&n,&m); for(int i=1;i<=n;i++) { scanf("%lld",&x); insert(x); } printf("Case #%d: ",g); for(int i=1;i<=m;i++) { scanf("%lld",&x); k=xor_que(x); printf("%lld ",k); } } }