#include <bits/stdc++.h>
using namespace std;
int n, m, aux;
long long int Posibles[59][59][2509];
long long int Grande = 0;
int puntero;
long long int Array[59];
long long int solve(int x, int y, long long int A) {
  long long int Grandex = 0;
  if (x == n + 1) {
    if ((A == 0) && (y == 0)) {
      return 1;
    } else {
      return 0;
    }
  }
  if (y < 0 || A < 0) return 0;
  if (Posibles[x][y][A] != -1) return Posibles[x][y][A];
  if (Posibles[x + 1][y][A] != -1) {
    Grandex += Posibles[x + 1][y][A];
  } else {
    Posibles[x + 1][y][A] = solve(x + 1, y, A);
    Grandex += Posibles[x + 1][y][A];
  }
  if (y > 0 && A >= Array[x]) {
    if (Posibles[x + 1][y - 1][A - Array[x]] != -1) {
      Grandex += Posibles[x + 1][y - 1][A - Array[x]];
    } else {
      Posibles[x + 1][y - 1][A - Array[x]] = solve(x + 1, y - 1, A - Array[x]);
      Grandex += Posibles[x + 1][y - 1][A - Array[x]];
    }
  }
  return Grandex;
}
int main() {
  for (int i = 0; i < 59; ++i) {
    for (int j = 0; j < 59; ++j) {
      for (int k = 0; k < 2509; ++k) {
        Posibles[i][j][k] = -1;
      }
    }
  }
  scanf("%d %d", &n, &m);
  for (int i = 0; i < n; ++i) {
    scanf("%d", &aux);
    Array[i] = aux;
  }
  sort(Array, Array + n + 1);
  long long int aux2;
  for (int j = 1; j < n + 1; j++) {
    aux2 = solve(0, j, (long long int)j * m);
    Grande += aux2;
  }
  cout << Grande;
  return 0;
}
