def countbit(n): ct = 0 while n != 0: ct += n % 2 n /= 2 return ct def fact(n): if n == 0: return 1 else: return n * fact(n-1) def calc(n,k,l): if k == 0: return fact(n) % (10**9+7) for i in range(1,k): if ((l[i] ^ l[i-1]) & l[i-1]) != 0: return 0 ll = map(countbit, l) ret = fact(ll[0]) % (10**9+7) for i in range(1,k): ret *= fact(ll[i]-ll[i-1]) ret %= 10**9+7 ret *= fact(n-ll[-1]) return ret % (10**9+7) n,k = map(int, raw_input().split()) if k != 0: l = sorted(map(int, raw_input().split())) else: l = [] print calc(n,k,l)