#include<bits/stdc++.h>
#define ll long long
using namespace std;
map<ll,ll> m1,m2;
int main()
{
ll n,s,i,v;
cin>>n>>s;
ll d[n],j;
for(i=0;i<n;i++)cin>>d[i];
ll s1 = n/2;
ll s2 = n-s1;
ll a[s1],b[s2];
for(i=0;i<n;i++)
{
if(i<s1)
{
a[i] = d[i];
}
else
{
b[i-s1] = d[i];
}
}
ll ans = 0,val;
v = pow(2,s1);
for(i=0;i<v;i++)
{
val = 0;
for(j=0;j<s1;j++)
{
if(i & (1<<j))
{
val+=a[j];
}
}
if(m1.find(val)==m1.end())
{
m1[val] = 1;
}
else
{
m1[val]++;
}
}
v = pow(2,s2);
for(i=0;i<v;i++)
{
val = 0;
for(j=0;j<s2;j++)
{
if(i & (1<<j))
{
val+=b[j];
}
}
if(m2.find(val)==m2.end())
{
m2[val] = 1;
}
else
{
m2[val]++;
}
}
map<ll,ll>::iterator it,it1;
for(it=m1.begin();it!=m1.end();++it)
{
v = s - (it->first);
if(v>=0)
{
it1 = m2.find(v);
if(it1!=m2.end())ans+=((it->second) * (it1->second));
}
}
cout<<ans;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCm1hcDxsbCxsbD4gbTEsbTI7CgppbnQgbWFpbigpCnsKCWxsIG4scyxpLHY7CgljaW4+Pm4+PnM7CgkKCWxsIGRbbl0sajsKCWZvcihpPTA7aTxuO2krKyljaW4+PmRbaV07CgkKCWxsIHMxID0gbi8yOwoJbGwgczIgPSBuLXMxOwoJCglsbCBhW3MxXSxiW3MyXTsKCQoJZm9yKGk9MDtpPG47aSsrKQoJewoJCWlmKGk8czEpCgkJewoJCQlhW2ldID0gZFtpXTsKCQl9CgkJZWxzZQoJCXsKCQkJYltpLXMxXSA9IGRbaV07CgkJfQoJfQoJCglsbCBhbnMgPSAwLHZhbDsKCQoJdiA9IHBvdygyLHMxKTsKCQoJZm9yKGk9MDtpPHY7aSsrKQoJewoJCXZhbCA9IDA7CgkJZm9yKGo9MDtqPHMxO2orKykKCQl7CgkJCWlmKGkgJiAoMTw8aikpCgkJCXsKCQkJCXZhbCs9YVtqXTsKCQkJfQoJCX0KCQkKCQlpZihtMS5maW5kKHZhbCk9PW0xLmVuZCgpKQoJCXsKCQkJbTFbdmFsXSA9IDE7CgkJfQoJCWVsc2UKCQl7CgkJCW0xW3ZhbF0rKzsKCQl9CgkJCgl9CgkKCXYgPSBwb3coMixzMik7CgkKCWZvcihpPTA7aTx2O2krKykKCXsKCQl2YWwgPSAwOwoJCWZvcihqPTA7ajxzMjtqKyspCgkJewoJCQlpZihpICYgKDE8PGopKQoJCQl7CgkJCQl2YWwrPWJbal07CgkJCX0KCQl9CgkJCgkJaWYobTIuZmluZCh2YWwpPT1tMi5lbmQoKSkKCQl7CgkJCW0yW3ZhbF0gPSAxOwoJCX0KCQllbHNlCgkJewoJCQltMlt2YWxdKys7CgkJfQoJCQoJfQoJCgltYXA8bGwsbGw+OjppdGVyYXRvciBpdCxpdDE7CgkKCQoJZm9yKGl0PW0xLmJlZ2luKCk7aXQhPW0xLmVuZCgpOysraXQpCgl7CgkJdiA9IHMgLSAoaXQtPmZpcnN0KTsKCgkJaWYodj49MCkKCQl7CgkJCWl0MSA9IG0yLmZpbmQodik7CgkJCWlmKGl0MSE9bTIuZW5kKCkpYW5zKz0oKGl0LT5zZWNvbmQpICogKGl0MS0+c2Vjb25kKSk7CgkJfQoJCQoJfQoJY291dDw8YW5zOwoJcmV0dXJuIDA7Cn0=