#include #define int long long #define rep(i,a,b) for(int i = a; i < b; i++) #define rerep(i,j,a,b) rep(i,a,b-1) rep(j,i+1,b) #define fore(i,a) for(auto &i : a) #define all(x) (x).begin(),(x).end() #define fix(i) fixed << setprecision(i) #define next_per(s) next_permutation(all(s)) using namespace std; templatebool chmax(T& a, const T& b) { if(a < b) { a = b; return 1; } return 0; } templatebool chmin(T& a, const T& b) { if(b < a) { a = b; return 1; } return 0; } using pii = pair; using pque = priority_queue; void main_(); signed main() { main_(); return 0; } /*------------------------------------------------------------------------------*/ const int INF = LLONG_MAX/2; const int MOD = 1000000007; /*------------------------------------------------------------------------------*/ void main_() { int N,K; cin >> N >> K; vector a(N); rep(i,0,N) cin >> a[i]; vector> dp(N+1, vector(K+1)); dp[0][0] = 1; rep(i,1,N+1) rep(j,0,K+1) { dp[i][j] = dp[i-1][j]; if(a[i-1] <= j) dp[i][j] += dp[i-1][j-a[i-1]]; } int Ans = dp[N][K]; printf("%lld\n", Ans); }