#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
#include<map>
#include<stack>
#include<cmath>
#include<iomanip>
#include<set>
#include<numeric>
#include<sstream>
#include<random>
#include<cassert>
using namespace std;
typedef long long ll;
#define rep(i, n) for (int i = 0; i < n; ++i)
#define rrep(i, st, n) for (int i = st; i < n; ++i)
using pii = pair<int, int>;
const int inf = 1e9 + 7;
int dy[] = {0, 0, -1, 1, -1, 1, -1, 1};
int dx[] = {1, -1, 0, 0, -1, 1, 1, -1};
#define ceil(a, b) a / b + !!(a % b)
int main() {
cin.tie(0);
ios::sync_with_stdio(false);
int n, a; cin >> n >> a;
int x[n]; rep(i, n) cin >> x[i];
//hint knapsack
//row how many words
//col sum
int dp[51][51 * 51] = {0};
rep(i, n) {
rep(j, i) {
rep(k, 51 * 51) {
if (dp[j][k]) {
dp[j + 1][k + x[i]] = max(dp[j + 1][k + x[i]], dp[j][k] + 1);
}
}
}
dp[i][x[i]] = max(dp[i][x[i]], 1);
cout << endl;
rep(i, n) {
rep(j, 10) cout << dp[i][j] << " "; cout << endl;
}
}
int val = a;
int ans = 0;
while (val < 51 * 51) {
rep(i, n) {
if (dp[i][val] == val / a) {
ans++;
}
}
val += a;
}
cout << ans << endl;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxxdWV1ZT4KI2luY2x1ZGU8bWFwPgojaW5jbHVkZTxzdGFjaz4KI2luY2x1ZGU8Y21hdGg+CiNpbmNsdWRlPGlvbWFuaXA+CiNpbmNsdWRlPHNldD4KI2luY2x1ZGU8bnVtZXJpYz4KI2luY2x1ZGU8c3N0cmVhbT4KI2luY2x1ZGU8cmFuZG9tPgojaW5jbHVkZTxjYXNzZXJ0Pgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKI2RlZmluZSByZXAoaSwgbikgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpCiNkZWZpbmUgcnJlcChpLCBzdCwgbikgZm9yIChpbnQgaSA9IHN0OyBpIDwgbjsgKytpKQp1c2luZyBwaWkgPSBwYWlyPGludCwgaW50PjsKY29uc3QgaW50IGluZiA9IDFlOSArIDc7CmludCBkeVtdID0gezAsIDAsIC0xLCAxLCAtMSwgMSwgLTEsIDF9OwppbnQgZHhbXSA9IHsxLCAtMSwgMCwgMCwgLTEsIDEsIDEsIC0xfTsKI2RlZmluZSBjZWlsKGEsIGIpIGEgLyBiICsgISEoYSAlIGIpCgppbnQgbWFpbigpIHsKICAgIGNpbi50aWUoMCk7CiAgICBpb3M6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7CiAgICBpbnQgbiwgYTsgY2luID4+IG4gPj4gYTsKICAgIGludCB4W25dOyByZXAoaSwgbikgY2luID4+IHhbaV07CiAgICAvL2hpbnQga25hcHNhY2sKICAgIC8vcm93IGhvdyBtYW55IHdvcmRzCiAgICAvL2NvbCBzdW0KICAgIGludCBkcFs1MV1bNTEgKiA1MV0gPSB7MH07CiAgICByZXAoaSwgbikgewogICAgICAgIHJlcChqLCBpKSB7CiAgICAgICAgICAgIHJlcChrLCA1MSAqIDUxKSB7CiAgICAgICAgICAgICAgICBpZiAoZHBbal1ba10pIHsKICAgICAgICAgICAgICAgICAgICBkcFtqICsgMV1bayArIHhbaV1dID0gbWF4KGRwW2ogKyAxXVtrICsgeFtpXV0sIGRwW2pdW2tdICsgMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZHBbaV1beFtpXV0gPSBtYXgoZHBbaV1beFtpXV0sIDEpOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICByZXAoaSwgbikgewogICAgICAgICAgICByZXAoaiwgMTApIGNvdXQgPDwgZHBbaV1bal0gPDwgIiAiOyBjb3V0IDw8IGVuZGw7CiAgICAgICAgfQogICAgfQogICAgCiAgICBpbnQgdmFsID0gYTsKICAgIGludCBhbnMgPSAwOwogICAgd2hpbGUgKHZhbCA8IDUxICogNTEpIHsKICAgICAgICByZXAoaSwgbikgewogICAgICAgICAgICBpZiAoZHBbaV1bdmFsXSA9PSB2YWwgLyBhKSB7CiAgICAgICAgICAgICAgICBhbnMrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2YWwgKz0gYTsKICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8IGVuZGw7Cn0K