#include <bits/stdc++.h>
using namespace std;
template <class T>
inline bool chmax(T& a, T b) {
  if (a < b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline bool chmin(T& a, T b) {
  if (a > b) {
    a = b;
    return true;
  }
  return false;
}
template <class T>
inline void add(T& a, T b) {
  a = ((a + b) % 1000000007 + 1000000007) % 1000000007;
};
const int dx[8] = {1, 0, -1, 0, 1, -1, -1, 1};
const int dy[8] = {0, 1, 0, -1, 1, 1, -1, -1};
int x[55];
int dp[55][10101];
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  int N, A, X;
  cin >> N >> A;
  X = A;
  for (int i = 0; i < N; i++) {
    cin >> x[i];
    chmax(X, x[i]);
    x[i] -= A;
  }
  dp[0][N * A] = 1;
  for (int j = 1; j <= N; j++) {
    for (int t = 0; t <= 2 * N * X; t++) {
      if (t - x[j - 1] < 0 || t - x[j - 1] > 2 * N * X)
        dp[j][t] = dp[j - 1][t];
      else
        dp[j][t] = dp[j - 1][t] + dp[j - 1][t - x[j - 1]];
    }
  }
  cout << dp[N][N * A] - 1 << endl;
}
