CSES - Shared codeLink to this code: https://cses.fi/paste/bd61629529d99d8b163f51/
// Coins Combinations I

#include<bits/stdc++.h>
using namespace std;

#define int long long

int M = 1e9 + 7;

int go(int x, int &n, int a[]) {
  int dp[x + 1];
  for(int i = 0; i <= x; i++) dp[i] = 0;
  dp[0] = 1;

  for(int j = 1; j <= x; j++) {
    for(int i = 0; i < n; i++) {
      if(j >= a[i]) {
        dp[j] += dp[j - a[i]];
        dp[j] %= M;
      }
    }
  } 

  return dp[x];
}

signed main() {
  int n, x;
  cin >> n >> x;
  int a[n];
  for(int i = 0; i < n; i++) {
    cin >> a[i];
  }
  int ans = go(x, n, a);
  if(ans == INT_MAX) {
    cout << -1;
  } else {
    cout << ans;
  }
  return 0;
}