// Problem :
#pragma GCC optimize("Ofast,unroll-loops,inline,fast-math")
#pragma GCC target("avx2,sse4.2,bmi,bmi2,lzcnt,popcnt,fma")
#include <bits/stdc++.h>
#if LOCAL
#include "algo/debug.h"
#endif
#define task "sol"
using namespace std;
using ll = long long;
constexpr int MOD = 1e9 + 7;
constexpr int LIMIT = 1e6 + 7;
constexpr ll INF = LLONG_MAX;
signed main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr); cout.tie(nullptr);
if (fopen(task".inp", "r")) {
freopen(task".inp", "r", stdin), freopen(task".out", "w", stdout);
}
int n, s;
cin >> n >> s;
vector<int> arr(n);
for (int &val : arr) cin >> val;
vector<int> dp(s + 1, 0);
dp[0] = 1;
for (const int &val : arr) {
for (int w = val; w <= s; ++w) {
(dp[w] += dp[w - val]) %= MOD;
}
}
cout << dp.back();
return 0;
}
Ly8gUHJvYmxlbSA6CgojcHJhZ21hIEdDQyBvcHRpbWl6ZSgiT2Zhc3QsdW5yb2xsLWxvb3BzLGlubGluZSxmYXN0LW1hdGgiKQojcHJhZ21hIEdDQyB0YXJnZXQoImF2eDIsc3NlNC4yLGJtaSxibWkyLGx6Y250LHBvcGNudCxmbWEiKQoKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojaWYgTE9DQUwKI2luY2x1ZGUgImFsZ28vZGVidWcuaCIKI2VuZGlmCgojZGVmaW5lIHRhc2sgInNvbCIKCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIGxsID0gbG9uZyBsb25nOwoKY29uc3RleHByIGludCBNT0QgPSAxZTkgKyA3Owpjb25zdGV4cHIgaW50IExJTUlUID0gMWU2ICsgNzsKY29uc3RleHByIGxsIElORiA9IExMT05HX01BWDsKCnNpZ25lZCBtYWluKCkgewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBjaW4udGllKG51bGxwdHIpOyBjb3V0LnRpZShudWxscHRyKTsKCiAgICBpZiAoZm9wZW4odGFzayIuaW5wIiwgInIiKSkgewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbiksIGZyZW9wZW4odGFzayIub3V0IiwgInciLCBzdGRvdXQpOwogICAgfQoKICAgIGludCBuLCBzOwogICAgY2luID4+IG4gPj4gczsKCiAgICB2ZWN0b3I8aW50PiBhcnIobik7CiAgICAKICAgIGZvciAoaW50ICZ2YWwgOiBhcnIpIGNpbiA+PiB2YWw7CgogICAgdmVjdG9yPGludD4gZHAocyArIDEsIDApOwogICAgZHBbMF0gPSAxOwoKICAgIGZvciAoY29uc3QgaW50ICZ2YWwgOiBhcnIpIHsKICAgICAgICBmb3IgKGludCB3ID0gdmFsOyB3IDw9IHM7ICsrdykgewogICAgICAgICAgICAoZHBbd10gKz0gZHBbdyAtIHZhbF0pICU9IE1PRDsKICAgICAgICB9CiAgICB9CgogICAgY291dCA8PCBkcC5iYWNrKCk7CgogICAgcmV0dXJuIDA7Cn0K