#include #define int long long using namespace std; int p = 1e9 + 7; int ji[100]; int f(int x) { if (x < 0) { cout << 0; exit(0); } int ans = 0; while (x) { if (x % 2 == 1) ans++; x /= 2; } return ji[ans]; } signed main() { ji[0] = 1; for (int i = 1; i <= 62; i++) { ji[i] = ji[i - 1] * i % p; ji[i] = ji[i] % p; } int n, t; cin >> n >> t; int ans = 1; int hh; int s = 0; for (int i = 1; i <= t; i++) { cin >> hh; ans = ans * f(hh - s); ans = ans % p; s = hh; } ans = ans * f(pow(2, n) - 1 - s); ans = ans % p; cout << ans; return 0; }