""" まぁ Bitごとに解けばよい 1の個数の偶奇が与えられる まず、不可の場合を考えよう 縦と横の1の個数の偶奇が違う それ以外は、2^((n-1)*(m-1)) が出来そう """ import sys from sys import stdin import heapq N,M = map(int,stdin.readline().split()) a = list(map(int,stdin.readline().split())) b = list(map(int,stdin.readline().split())) mod = 998244353 flag = True for i in range(20): x = 0 y = 0 for j in a: if 2**i & j > 0: x ^= 1 for j in b: if 2**i & j > 0: y ^= 1 if x != y: flag = False if flag: ans = pow( pow(2, (N-1)*(M-1) , mod ) ,20 , mod) print (ans) else: print (0)