#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int main() { int n, k; long long a[66], o = 1; cin >> n >> k; for (int i = 1; i <= k; i++) { cin >> a[i]; } a[0] = 0, a[k + 1] = (o << n) - 1; sort(a, a + k + 1); long long ans = 1; for (int i = 1; i <= k + 1; i++) { long long co = 0; for (long long j = 0; j < n; j++) { if (!(a[i] & (o << j)) && (a[i - 1] & (o << j))) { cout << 0 << endl; return 0; } if ((a[i] & (o << j)) && !(a[i - 1] & (o << j))) { co++; } } for (long long j = co; j > 0; j--) { ans *= j; ans %= 1000000007; } } cout << ans << endl; return 0; }