#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
long long lcm(long long a, long long b) { return a / gcd(a, b) * b; }
long long powD(long long a, long long b) {
  long long ans = 1;
  a %= (1000000007);
  for (int i = 0; i < b; i++) {
    ans *= a;
    ans %= (1000000007);
  }
  return ans;
}
int main() {
  int i, j, k;
  int N, M, K;
  long long dp[51][501] = {{0}};
  int A;
  cin >> N >> A;
  vector<int> X;
  int Max = 0;
  for ((i) = 0; i < (int)(N); i++) {
    int x;
    cin >> x;
    Max = max(Max, x);
    X.push_back(x);
  }
  Max = max(Max, A);
  for ((i) = 0; i < (int)(N); i++) {
    X[i] -= A;
  }
  int NX = N * Max;
  dp[0][NX] = 1;
  for ((i) = 1; i < (int)(N + 1); i++) {
    int y = X[i - 1];
    for ((j) = 0; j < (int)(2 * NX); j++) {
      if (j - y < 0 || j - y > 2 * NX) {
        dp[i][j] = dp[i - 1][j];
        continue;
      }
      dp[i][j] = dp[i - 1][j] + dp[i - 1][j - y];
    }
  }
  cout << dp[N][NX] - 1;
  return 0;
}
