def compute_counts(arr): counts = [0] * 1024 current_prefix = 0 freq = [0] * 1024 freq[0] = 1 # Initially, prefix XOR is 0 with count 1 for num in arr: current_prefix ^= num for prev_x in range(1024): if freq[prev_x]: x = current_prefix ^ prev_x counts[x] += freq[prev_x] freq[current_prefix] += 1 return counts def main(): MOD = 10**9 + 7 import sys input = sys.stdin.read().split() idx = 0 N = int(input[idx]); idx +=1 M = int(input[idx]); idx +=1 K = int(input[idx]); idx +=1 a = list(map(int, input[idx:idx+N])) idx += N b = list(map(int, input[idx:idx+M])) a_counts = compute_counts(a) b_counts = compute_counts(b) result = 0 for x in range(1024): y = x ^ K result += a_counts[x] * b_counts[y] if result >= MOD: result %= MOD result %= MOD print(result) if __name__ == '__main__': main()