import sys sys.setrecursionlimit(1 << 25) class TrieNode: __slots__ = ['children'] def __init__(self): self.children = [None, None] class Trie: def __init__(self): self.root = TrieNode() def insert(self, num): node = self.root for i in range(31, -1, -1): bit = (num >> i) & 1 if not node.children[bit]: node.children[bit] = TrieNode() node = node.children[bit] def query(self, s): node = self.root max_xor_k = 0 for i in range(31, -1, -1): current_bit = (s >> i) & 1 target_bit = 1 - current_bit if node.children[1 - current_bit] else current_bit max_xor_k |= (target_bit << i) node = node.children[target_bit] return max_xor_k def clear(self, node=None): if node is None: node = self.root for child in node.children: if child: self.clear(child) del node def main(): input = sys.stdin.read().split() ptr = 0 T = int(input[ptr]) ptr += 1 for case in range(1, T + 1): N = int(input[ptr]) M = int(input[ptr + 1]) ptr += 2 nums = list(map(int, input[ptr:ptr + N])) ptr += N trie = Trie() for num in nums: trie.insert(num) print(f"Case #{case}:") for _ in range(M): S = int(input[ptr]) ptr += 1 print(trie.query(S)) trie.clear() if __name__ == "__main__": main()