#include<bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int a[N];
int dp[N];//dp[N][N]考虑前i个数,数字和恰好为j的情况下的所有选择方案
int main() {
int n,m;
cin>>n>>m;
//初始化很重要
dp[0]=1;//只有一种方案,什么也不选
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) {
for(int j=m;j>=0;j--) {
if(j>=a[i]) {
dp[j]+=dp[j-a[i]];//选和不选两种集合的总和
}
}
}
cout<<dp[m];
return 0;
}