#include using namespace std; using ll = long long; using mint = atcoder::modint998244353; int main(){ int n, k; cin >> n >> k; vector a(k); vector fact(n + 1); for(auto &&v:a)cin >> v; fact[0] = 1; for(int i = 1; i <= n; i++)fact[i] = i * fact[i - 1]; a.push_back(0); a.push_back((1ll << n) - 1); sort(a.begin(), a.end()); a.erase(unique(a.begin(), a.end()), a.end()); mint ans = 1; for(int i = 0; i + 1 < a.size(); i++){ if((a[i] & a[i + 1]) != a[i]){ cout << 0 << endl; return 0; } ans *= fact[__builtin_popcountll(a[i] ^ a[i + 1])]; } cout << ans.val() << endl; }