Link to this code: https://cses.fi/paste/4060ef4da6056bb522a9ca/
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<int> vi;
typedef pair<int, int> pi;
#define F first
#define S second
#define PB push_back
#define MP make_pair
#define rep(i, a, b) for (int i = a; i <=b; i++)


ll n = 3 ;
ll x = 9;
ll a[100];
ll dp[1000001];
ll mod = 1000000007;
ll ans( ll sum)
{
    if (dp[sum] != -1)
        return dp[sum];

    if (sum == 0)
        return dp[0] = 1;

    ll g = 0;
    for (int i = 0; i < n; i++) {
        if (a[i] <= sum) {
            g +=  (ans(sum - a[i]) ) % (mod);
            g %= (mod);
        }
    }
    return  dp[sum] = g;
}
int main()
{
    cin >> n >> x;
    rep(i, 0, n - 1) {
        cin >> a[i];
    }
    memset(dp , -1, sizeof dp);
    cout << ans(x);
}