#include <bits/stdc++.h>
using namespace std;
vector<int> napsack(vector<int> np) {
  long long total = 0;
  for (int i = 0; i < np.size(); i++) total += np.at(i);
  vector<vector<int>> dp(np.size() + 1, vector<int>(total + 1, 0));
  dp.at(0).at(0) = 1;
  for (int i = 0; i < np.size(); i++) {
    for (int j = 0; j < total + 1 - np.at(i); j++) {
      dp.at(i + 1).at(j) += dp.at(i).at(j);
      dp.at(i + 1).at(j + np.at(i)) += dp.at(i).at(j);
    }
  }
  return dp.at(np.size());
}
int main() {
  int n, a;
  cin >> n >> a;
  vector<int> x(n);
  for (int i = 0; i < n; i++) {
    cin >> x.at(i);
    x.at(i) -= a;
  }
  int zr = 0;
  vector<int> mi;
  vector<int> pl;
  for (int i = 0; i < n; i++) {
    if (x.at(i) == 0)
      zr++;
    else if (x.at(i) < 0)
      mi.push_back(-x.at(i));
    else
      pl.push_back(x.at(i));
  }
  vector<int> mis = napsack(mi);
  vector<int> pls = napsack(pl);
  long long ans = 0;
  for (int i = 0; i < min(mis.size(), pls.size()); i++)
    ans += mis.at(i) * pls.at(i);
  ans *= pow(2, zr);
  cout << ans - 1 << endl;
}
