#include <bits/stdc++.h>
using namespace std;
#define modulo ll (1e9 + 7)
#define neig(a, u, e, v) for(int v, e = (a).head[u] ; ~e and (v = (a).to[e], 1) ; e = (a).nxt[e])
typedef long long ll;
const int N = 2e5 + 9, M = 1e6 + 9, OO = 0x3f3f3f3f;
const ll llOO = 0x3f3f3f3f3f3f3f3f;
int main() {
cin.tie(0);
cin.sync_with_stdio(0);
int n;
cin >> n;
ll x;
cin >> x;
int a[n];
for(int i = 0;i < n;i++)
cin >> a[i];
int ans = 0; // number of subsets with sum equal to x
// the binary representation of i represents the subset
for(int i = 0;i < (1 << n);i++){
ll sum = 0;// subset sum
for(int j = 0;j < n;j++){
// check if the j-th bit of i is 1 (j-th element is included in the subset)
if((i >> j) & 1){
sum += a[j];
}
}
if(sum == x)
ans++;
}
cout << ans;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBtb2R1bG8gbGwgKDFlOSArIDcpCiNkZWZpbmUgbmVpZyhhLCB1LCBlLCB2KSBmb3IoaW50IHYsIGUgPSAoYSkuaGVhZFt1XSA7IH5lIGFuZCAodiA9IChhKS50b1tlXSwgMSkgOyBlID0gKGEpLm54dFtlXSkKCnR5cGVkZWYgbG9uZyBsb25nIGxsOwoKY29uc3QgaW50IE4gPSAyZTUgKyA5LCBNID0gMWU2ICsgOSwgT08gPSAweDNmM2YzZjNmOwpjb25zdCBsbCBsbE9PID0gMHgzZjNmM2YzZjNmM2YzZjNmOwoKaW50IG1haW4oKSB7CiAgICBjaW4udGllKDApOwogICAgY2luLnN5bmNfd2l0aF9zdGRpbygwKTsKCiAgICBpbnQgbjsKICAgIGNpbiA+PiBuOwogICAgCiAgICBsbCB4OwogICAgY2luID4+IHg7CgogICAgaW50IGFbbl07CiAgICBmb3IoaW50IGkgPSAwO2kgPCBuO2krKykKICAgICAgICBjaW4gPj4gYVtpXTsKICAgIAogICAgaW50IGFucyA9IDA7IC8vIG51bWJlciBvZiBzdWJzZXRzIHdpdGggc3VtIGVxdWFsIHRvIHgKICAgIAogICAgLy8gdGhlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBpIHJlcHJlc2VudHMgdGhlIHN1YnNldAogICAgZm9yKGludCBpID0gMDtpIDwgKDEgPDwgbik7aSsrKXsKICAgICAgICBsbCBzdW0gPSAwOy8vIHN1YnNldCBzdW0KICAgICAgICBmb3IoaW50IGogPSAwO2ogPCBuO2orKyl7CiAgICAgICAgICAgIC8vIGNoZWNrIGlmIHRoZSBqLXRoIGJpdCBvZiBpIGlzIDEgKGotdGggZWxlbWVudCBpcyBpbmNsdWRlZCBpbiB0aGUgc3Vic2V0KQogICAgICAgICAgICBpZigoaSA+PiBqKSAmIDEpewogICAgICAgICAgICAgICAgc3VtICs9IGFbal07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYoc3VtID09IHgpCiAgICAgICAgICAgIGFucysrOwogICAgfQogICAgCiAgICBjb3V0IDw8IGFuczsKfQ==