#include <bits/stdc++.h>
#define int long long
int n,m;
int arr[50];
std::vector<int> res1;
std::vector<int> res2;
signed main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
std::cin >> n >> m;
for(int i=1;i<=n;i++)std::cin >> arr[i];
int mid = (n+1)/2;
res1.push_back(0);
for(int i=1;i<=mid;i++){
auto temp = res1;
for(auto num:temp){
if(num+arr[i]<=m)
res1.push_back(num+arr[i]);
}
}
res2.push_back(0);
for(int i=mid+1;i<=n;i++){
auto temp = res2;
for(auto num:temp){
if(num+arr[i]<=m)
res2.push_back(num+arr[i]);
}
}
std::sort(res1.begin(),res1.end());
int sum = 0;
for(auto num:res2){
int maxV = m-num;
int cnt = std::upper_bound(res1.begin(),res1.end(),maxV)-res1.begin();
sum+=cnt;
}
std::cout << sum;
}