#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const long long modc = 1e9+7; int main(){ long long N, K, ans=0; cin >> N >> K; vector A(N+1); for (int i=1; i<=N; i++) cin >> A[i]; vector> dp(N+1, vector(10001)); dp[0][0] = 1; for (int i=1; i<=N; i++){ vector> pd(N+1, vector(10001)); for (int j=0; j<=N; j++){ for (int k=0; k<=10000; k++){ pd[j][k] += dp[j][k]; if (j>=1 && k>=A[i]) pd[j][k] += dp[j-1][k-A[i]]; pd[j][k] %= modc; } } swap(dp, pd); } for (int i=1; i<=N; i++){ for (int j=0; j<=10000; j++){ if (j >= K*i){ ans += dp[i][j]; ans %= modc; } } } cout << ans << endl; return 0; }