#include <bits/stdc++.h>
using namespace std;
const long long MOD = 1000000007ll;
long long modSum(long long a, long long b) {
  return ((a % MOD) + (b % MOD)) % MOD;
}
long long modProd(long long a, long long b) {
  return ((a % MOD) * (b % MOD)) % MOD;
}
long long getPow(long long x, long long e) {
  if (e == 0) return 1;
  if (e % 2 == 0) {
    long long tmp = getPow(x, e / 2);
    return modProd(tmp, tmp);
  } else {
    long long tmp = getPow(x, e - 1);
    return modProd(tmp, x);
  }
}
bool isEven(int x) {
  int tmp = ((x % 2) + 2) % 2;
  return tmp == 0;
}
bool isMultipleOfFour(int x) { return isEven(x) && isEven(x / 2); }
const int MAXN = 51;
const int MAXSUM = 2501;
int N, A;
int ar[MAXN];
long long memo[MAXN][MAXSUM][MAXN];
void input() {
  cin >> N >> A;
  for (int i = 1; i <= N; i++) {
    cin >> ar[i];
  }
}
void preprocess() {}
void solve() {
  memo[0][0][0] = 1;
  for (int i = 1; i <= N; i++) {
    memo[i][0][0] = 1;
    for (int s = 1; s < MAXSUM; s++) {
      for (int c = 1; c <= N; c++) {
        memo[i][s][c] = memo[i - 1][s][c];
        if (s >= ar[i]) {
          memo[i][s][c] += memo[i - 1][s - ar[i]][c - 1];
        }
      }
    }
  }
  long long ans = 0;
  for (int mul = 1; mul * A < MAXSUM; mul++) {
    ans += memo[N][mul * A][mul];
  }
  cout << ans;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cerr.tie(0);
  int T;
  T = 1;
  for (int i = 0; i < T; i++) {
    input();
    preprocess();
    solve();
  }
  return 0;
}
