#include #include #include #include using namespace std; const long long MOD = 1000000007; long long fact(int n){ long long ans = 1; for (int i = 1; i <= n; i++){ ans = ans * i % MOD; } return ans; } int main(){ int N, k; cin >> N >> k; vector a(k + 2); a[0] = 0; a[k + 1] = ((long long) 1 << N) - 1; for (int i = 1; i <= k; i++){ cin >> a[i]; } sort(a.begin(), a.end()); long long ans = 1; for (int i = 0; i <= k; i++){ if ((a[i] & a[i + 1]) != a[i]){ cout << 0 << endl; return 0; } ans = ans * fact(__builtin_popcountll(a[i + 1] & ~a[i])) % MOD; } cout << ans << endl; }