#include <bits/stdc++.h>
using namespace std;
int d[1 << 20];
int N;
int A;
int y[20];
long long dp(long long x) {
  if (d[x] != 0) return 0;
  d[x] = 1;
  long long ans = 0;
  for (int i = 0; i < (N); i++) {
    long long s = x;
    if ((s >> i) != 1) ans += dp(s | 1 << i);
  }
  long long z = 0;
  for (int i = 0; i < (N); i++) {
    long long s = x;
    if (s >> i & 1) {
      z += y[i];
    }
  }
  if (z == 0) {
    ans++;
  }
  return ans;
}
int main() {
  memset(d, 0, sizeof(d));
  cin >> N >> A;
  for (int i = 0; i < (N); i++) {
    cin >> y[i];
    y[i] -= A;
  }
  long long ans = 0;
  for (int i = 0; i < (N); i++) {
    ans += dp(1 << i);
  }
  cout << ans << endl;
  return (0);
}
