// Practice is the only shortcut to improve
#include <bits/stdc++.h>
using namespace std;
#define tc(t) int t; cin >> t; while (t--)
#define REP(i,a,b) for(int i=a;i<b;++i)
#define REPI(i,a,b) for(int i=a;i>=b;--i)
#define vi vector<int>
#define endl "\n"
#define Ka_chow ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
const int M = 1e9 + 7;
vector<vector<int>> dp;
void Cyan() {
// Think Twice Code Once
int n, k;
cin >> n >> k;
vi a(n);
REP(i, 0, n) cin >> a[i];
dp.resize(n + 1, vi(k + 1, 0));
dp[n][0] = 1;
REPI(i, n - 1, 0) {
REP(sum, 0 , k + 1) {
dp[i][sum] = dp[i + 1][sum];
if (sum >= a[i]) dp[i][sum] += dp[i][sum - a[i]];
dp[i][sum] %= M;
}
}
cout << dp[0][k] << endl;
}
signed main() {
Ka_chow
// seive();
// tc(t)
Cyan();
}