#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll n, x, a[40];
vector<ll> le, ri;
vector<ll> f(int l, int r) {
int m = r - l + 1;
vector<ll> res;
for (int i = 0; i < (1 << m); i++) {
ll sum = 0;
for (int j = 0; j < m; j++) {
if (i & (1 << j)) {
sum += a[l + j];
}
}
res.push_back(sum);
}
return res;
}
int main() {
cin.tie(0) -> sync_with_stdio(false), cout.tie(0);
cin >> n >> x;
for (int i = 0; i < n; i++) {
cin >> a[i];
}
le = f(0, n / 2 - 1), ri = f(n / 2, n - 1);
sort(le.begin(), le.end()), sort(ri.begin(), ri.end());
ll ans = 0;
for (auto i : le) {
auto lo = lower_bound(ri.begin(), ri.end(), x - i);
auto hi = upper_bound(ri.begin(), ri.end(), x - i);
ans += hi - lo;
}
cout << ans << '\n';
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiAKdHlwZWRlZiBsb25nIGxvbmcgbGw7CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApsbCBuLCB4LCBhWzQwXTsKdmVjdG9yPGxsPiBsZSwgcmk7CiAKdmVjdG9yPGxsPiBmKGludCBsLCBpbnQgcikgewogICAgaW50IG0gPSByIC0gbCArIDE7CiAgICB2ZWN0b3I8bGw+IHJlczsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKDEgPDwgbSk7IGkrKykgewogICAgICAgIGxsIHN1bSA9IDA7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBtOyBqKyspIHsKICAgICAgICAgICAgaWYgKGkgJiAoMSA8PCBqKSkgewogICAgICAgICAgICAgICAgc3VtICs9IGFbbCArIGpdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJlcy5wdXNoX2JhY2soc3VtKTsKICAgIH0KICAgIHJldHVybiByZXM7Cn0KIAogCmludCBtYWluKCkgewogICAgY2luLnRpZSgwKSAtPiBzeW5jX3dpdGhfc3RkaW8oZmFsc2UpLCBjb3V0LnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IHg7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgbGUgPSBmKDAsIG4gLyAyIC0gMSksIHJpID0gZihuIC8gMiwgbiAtIDEpOwogICAgc29ydChsZS5iZWdpbigpLCBsZS5lbmQoKSksIHNvcnQocmkuYmVnaW4oKSwgcmkuZW5kKCkpOwogICAgbGwgYW5zID0gMDsKICAgIGZvciAoYXV0byBpIDogbGUpIHsKICAgICAgICBhdXRvIGxvID0gbG93ZXJfYm91bmQocmkuYmVnaW4oKSwgcmkuZW5kKCksIHggLSBpKTsKICAgICAgICBhdXRvIGhpID0gdXBwZXJfYm91bmQocmkuYmVnaW4oKSwgcmkuZW5kKCksIHggLSBpKTsKICAgICAgICBhbnMgKz0gaGkgLSBsbzsKICAgIH0KICAgIGNvdXQgPDwgYW5zIDw8ICdcbic7CiAgICByZXR1cm4gMDsKfQ==