#include <bits/stdc++.h>
using namespace std;
constexpr auto INF = 1000000000;
constexpr auto LLINF = 1LL << 62;
constexpr auto mod = 1000000007;
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return 1;
  }
  return 0;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return 1;
  }
  return 0;
}
long long dp[51][51][51];
int main() {
  int n, a, m = 0;
  cin >> n >> a;
  vector<int> x(n);
  for (int(i) = 0; (i) < (n); (i)++) {
    cin >> x[i];
    chmax(m, x[i]);
  }
  for (int(j) = 0; (j) <= (n); (j)++)
    for (int(k) = 0; (k) <= (n); (k)++)
      for (int(s) = 0; (s) <= (n * m); (s)++) {
        if (!(j || k || s))
          dp[j][k][s] = 1;
        else if (j && s < x[j - 1])
          dp[j][k][s] = dp[j - 1][k][s];
        else if (j && k && s >= x[j - 1])
          dp[j][k][s] = dp[j - 1][k][s] + dp[j - 1][k - 1][s - x[j - 1]];
        else
          dp[j][k][s] = 0;
      }
  long long ans = 0;
  for (int(i) = 1; (i) <= (n); (i)++) {
    ans += dp[n][i][a * i];
  }
  cout << ans << endl;
}
