- #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==