MOD = 1000000007 n, k = gets.split.map(&:to_i) a = (k != 0 ? gets.split.map(&:to_i).sort : []) if k != 0 && a.max < a.inject(:|).to_i p 0 else f = Array.new(n + 1) f[0] = 1 f[1] = 1 2.upto(n){|i| f[i] = f[i - 1] * i % MOD } a = [0] + a + [(1 << n) - 1] ans = 1 (k + 1).times{|i| ans = ans * f[a[i + 1].to_s(2).count(?1) - a[i].to_s(2).count(?1)]% MOD } p ans end