CSES - Shared codeLink to this code: https://cses.fi/paste/cec6c5a946bc58f61f10d4/
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Scanner;

public class CoinCombination {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
//long n;

		Scanner in = new Scanner(System.in);
		PrintWriter out = new PrintWriter(System.out);
		int n = in.nextInt();
		int x = in.nextInt();
		int coins[] = new int[n];
		//int start_ind = 0;
		for (int i = 0; i < n; i++) {
			coins[i] = in.nextInt();
		}
		 Arrays.sort(coins);
		int dp[] = new int[x + 1];

		int mod = 1000000007;
		dp[0] = 1;

		for (int i = coins[0]; i < dp.length; i++) {
			dp[i] = 0;
			for (int j = 0; j < n; j++) {
				 if ( coins[j]>i)
				 break;
				
					dp[i] = (dp[i] + dp[i - coins[j]]) % mod;

				
			}
		}
		

		System.out.println(dp[dp.length - 1]);
	}
}