#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
// dp knapsack
// Biến thể: mỗi món vật có thể được chọn nhiều lần và thứ tự chọn có quan trọng
// ví dụ 2 2 5 khác với 2 5 2
const int N = 1e2 + 5;
const int S = 1e6 + 5;
const int MOD = 1e9 + 7;
int n, s;
int w[N];
int dp[S]; // dp[j] = Số cách tạo tổng j
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> s;
for (int i = 1; i <= n; i++) cin >> w[i];
dp[0] = 1;
for (int j = 0; j <= s; j++) {
for (int i = 1; i <= n; i++) {
if (j - w[i] >= 0) {
(dp[j] += dp[j - w[i]]) %= MOD;
}
}
} // O(s * n)
cout << dp[s] << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKLy8gZHAga25hcHNhY2sKLy8gQmnhur9uIHRo4buDOiBt4buXaSBtw7NuIHbhuq10IGPDsyB0aOG7gyDEkcaw4bujYyBjaOG7jW4gbmhp4buBdSBs4bqnbiB2w6AgdGjhu6kgdOG7sSBjaOG7jW4gY8OzIHF1YW4gdHLhu41uZyAKLy8gdsOtIGThu6UgMiAyIDUga2jDoWMgduG7m2kgMiA1IDIgIAoKY29uc3QgaW50IE4gPSAxZTIgKyA1OyAKY29uc3QgaW50IFMgPSAxZTYgKyA1OyAgICAKY29uc3QgaW50IE1PRCA9IDFlOSArIDc7IAoKaW50IG4sIHM7ICAKaW50IHdbTl07ICAKaW50IGRwW1NdOyAvLyBkcFtqXSA9IFPhu5EgY8OhY2ggdOG6oW8gdOG7lW5nIGogCgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAgCQoJY2luID4+IG4gPj4gczsgIAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gd1tpXTsgCgoJZHBbMF0gPSAxOyAgIAoJZm9yIChpbnQgaiA9IDA7IGogPD0gczsgaisrKSB7CgkJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJCWlmIChqIC0gd1tpXSA+PSAwKSB7CgkJCQkoZHBbal0gKz0gZHBbaiAtIHdbaV1dKSAlPSBNT0Q7ICAKCQkJfQoJCX0KCX0gLy8gTyhzICogbikKCgljb3V0IDw8IGRwW3NdIDw8ICdcbic7IAp9