import math def read_data(): N, k = map(int, input().split()) if k == 0: As = [] else: As = list(map(int, input().split())) return N, k, As def solve(N, k, As): mod = 10**9 + 7 ones = (1 << N) - 1 if k == 0: return math.factorial(N) % mod As.sort() if As[-1] != ones: As.append(ones) counts = 1 v = 0 for a in As: if v & a != v: return 0 dif = bin(a - v).count('1') counts *= (math.factorial(dif) % mod) counts %= mod v = a return counts N, k, As = read_data() print(solve(N, k, As))