#pragma GCC optimize("Ofast", "unroll-loops") #pragma GCC target("avx2") #include using namespace std; #define ll long long constexpr ll mod = 1000000007LL; int N, K; vector A; void input(void){ cin >> N >> K; A.resize(N); for (int& ai : A) cin >> ai; } constexpr int offset = 10000; ll solve(void){ for (int& ai : A) ai -= K; vector> dp( N + 1, vector(2 * offset + 1, 0) ); dp[0][offset] = 1; for (int i = 1; i <= N; ++i){ int a = A[i - 1]; for (int s = 0; s <= 2 * offset; ++s){ dp[i][s] = dp[i - 1][s]; if (0 <= s - a && s - a <= 2 * offset) dp[i][s] = (dp[i][s] + dp[i - 1][s - a]) % mod; } } ll ret = 0; for (int s = offset; s <= 2 * offset; ++s) ret = (ret + dp[N][s]) % mod; return (ret + mod - 1) % mod; } int main(void){ input(); cout << solve() << endl; return 0; }