Link to this code: https://cses.fi/paste/ea7be550e17f258fb775bb/
#include <iostream>
#include <vector>
 
using namespace std;
 
int main() {
	int n, x;
	cin >> n >> x;
 
	const int M = 1000000007;
 
	vector<int> coins(n);
 
	for (int i = 0;i < n;++i) cin >> coins[i];
 
	vector<long long> dp(x + 1);
	dp[0] = 1;
	
	for (int coin : coins) {
		for (int i = coin;i < x + 1;++i) {
			dp[i] = (dp[i] + dp[i - coin]) % M;
		}
	}
 
	cout << dp[x] << endl;
}