#include <bits/stdc++.h>
using namespace std;
template <typename T>
ostream& operator<<(ostream& s, const vector<T>& v) {
  int len = v.size();
  for (int i = 0; i < len; ++i) {
    s << v[i];
    if (i < len - 1) s << " ";
  }
  return s;
}
int main() {
  long long N, A;
  long long x[51];
  cin >> N >> A;
  for (int i = 0; i < N; i++) {
    cin >> x[i];
    x[i] -= A;
  }
  vector<long long> v;
  for (int i = 0; i < 1 << (N / 2); i++) {
    long long s = 0;
    for (int j = 0; j < N / 2; j++) {
      if (i >> j & 1) {
        s += x[j];
      }
    }
    v.push_back(s);
  }
  sort(v.begin(), v.end());
  long long ans = 0;
  for (int i = 0; i < 1 << (N - N / 2); i++) {
    long long s = 0;
    for (int j = 0; j < N - N / 2; j++) {
      if (i >> j & 1) {
        s += x[j + N / 2];
      }
    }
    ans += upper_bound(v.begin(), v.end(), -s) -
           lower_bound(v.begin(), v.end(), -s);
  }
  cout << ans - 1 << endl;
  return 0;
}
