#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define pb push_back
int n, x;
vector<int> a;
vector<ll> get(int l, int r){
std::vector<ll> v;
int len = (r - l + 1);
for(int i = 0 ; i < (1 << len);i ++){
ll sum = 0;
for(int j = 0; j < len; j ++){
if(i & (1 << j)){
sum += a[l + j];
}
}
v.pb(sum);
}
return v;
}
int main() {
cin >> n >> x;
a.resize(n + 1);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
vector<ll> left = get(0, n / 2 - 1);
vector<ll> right = get(n / 2, n - 1);
sort(left.begin(), left.end());
sort(right.begin(), right.end());
ll ans = 0;
for (ll i : left) {
auto h = upper_bound(right.begin(), right.end(), x - i);
ans += h - right.begin();
}
cout << ans << endl;
}