1 #define bug(x) cout<<#x<<" is "<<x<<endl
2 #define IO std::ios::sync_with_stdio(0)
3 #include <bits/stdc++.h>
4 using namespace std;
5 typedef long long ll;
6 #define mk make_pair
7 #define pb push_back
8 const int inf=2147483647;
9 const int N=1e5+10;
10 ll w,ans;
11 ll a[N],v[N];
12 int cnt,n,e;
13 void dfs(int h,ll x){
14 if(h>e){
15 a[++cnt]=x;
16 return;
17 }
18 dfs(h+1,x);
19 dfs(h+1,x+v[h]);
20 }
21 void dfs1(int h,ll x){
22 if(h>e){
23 int k=upper_bound(a+1,a+1+cnt,w-x)-a;
24 ans+=k-1;
25 return;
26 }
27 dfs1(h+1,x);
28 dfs1(h+1,x+v[h]);
29 }
30 int main(){
31 IO;
32 while(cin>>n>>w){
33 for(int i=1;i<=n;i++){
34 cin>>v[i];
35 }
36 ans=cnt=0;
37 e=n/2;
38 dfs(1,0);
39 sort(a+1,a+1+cnt);
40 e=n;
41 dfs1(n/2+1,0);
42 cout<<ans<<endl;
43 }
44 }
45 /*
46 30 100
47 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
48
49 */