#define bg begin()
#define ed end()
#define all(x) (x).bg,(x).ed
#define rep(i,n) for(ll i=0;i<(n);i++)
#define rep1(i,n) for(ll i=1;i<=(n);i++)
#define FOR(i,a,b) for(ll i=(a);i<(b);i++)

int main(){
	//input
	ll N,A; cin>>N>>A;
	vector<ll> X(N+1);
	rep1(i,N) cin>>X[i];

	ll dp[51][51][2501]; //dp[x][y][z]:x番目までy個選び和をzにする

	rep1(i,50)rep1(j,50)rep(k,2501) dp[i][j][k]=0;
	dp[1][0][0]=1;
	dp[1][1][X[1]]=1;

	FOR(i,2,51){
		rep(j,i+1){
			rep(k,2501){
				if(j!=0 && k>=X[i]) dp[i][j][k]+=dp[i-1][j-1][k-X[i]];
				dp[i][j][k]+=dp[i-1][j][k];
			}
		}
	}
	
	ll ans=0;
	rep1(i,50){
		if(i*A<=2500) ans+=dp[N][i][i*A];
	}

	cout<<ans;
}