#include #include #include #include #include #include #include #include #define rep(i, j, n) for (int i = (j); i < (int)(n); ++i) #define rrep(i, j, n) for (int i = (n)-1; i >= (int(j); --i) using namespace std; using ll = long long; constexpr int INF = 1 << 30; constexpr ll MOD = 1000000007; int main() { int n, k; cin >> n >> k; vector a(n); rep(i, 0, n) { cin >> a[i]; a[i] -= k; } unordered_map dp; dp[0] = 1; rep(i, 0, n) { unordered_map ndp; for (int j = 10000; j >= -10000; --j) { ndp[j + a[i]] += dp[j]; ndp[j] += dp[j]; ndp[j + a[i]] %= MOD; ndp[j] %= MOD; } dp = ndp; } ll ans = 0; rep(i, 0, 10001) { ans += dp[i]; ans %= MOD; } cout << ans - 1 << endl; return 0; }