import sys input = lambda : sys.stdin.readline().rstrip() sys.setrecursionlimit(max(1000, 10**9)) write = lambda x: sys.stdout.write(x+"\n") n,m,x = list(map(int, input().split())) a = list(map(int, input().split())) b = list(map(int, input().split())) M = 10**9+7 def sub(a,b): xa = 0 xb = 0 for num in a: xa ^= num for num in b: xb ^= num if xa!=xb: return 0 else: return pow(2,len(a)*len(b)-(len(a)+len(b))+1,M) ans = 1 for i in range(x): res = sub([(item>>i)&1 for item in a], [(item>>i)&1 for item in b]) if res == 0: ans = 0 break else: ans *= res ans %= M print(ans)