#include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long ll; #define rep(i, n) for (int i=0;i < (int)(n);i++) int n; set st; map mp; vector a; void dfs(int bit,ll w,int d){ if (d == n){ st.insert(w); return; } if (bit & 1 << d) { dfs(bit,w+a[d],d+1); dfs(bit,w+a[d]/2,d+1); } else{ dfs(bit,w,d+1); } } int main(){ ll w; cin >> n >> w; a.resize(n); rep(i,n) cin >> a[i]; for (int bit = 1; bit < (1 << n);bit++){ st.clear(); dfs(bit,0,0); for (auto q:st){ mp[q]++; } } cout << mp[w] << endl; return 0; }