#include using namespace std; void dfs(int N, int W, vector &a, vector &r, int p, long long S, int s){ if (p == N){ if (S == W){ r[s] = 1; } } else { dfs(N, W, a, r, p + 1, S, s); dfs(N, W, a, r, p + 1, S + a[p] / 2, s + (1 << p)); dfs(N, W, a, r, p + 1, S + a[p], s + (1 << p)); } } int main(){ int N, W; cin >> N >> W; vector a(N); for (int i = 0; i < N; i++){ cin >> a[i]; } vector r(1 << N, 0); dfs(N, W, a, r, 0, 0, 0); int ans = 0; for (int i = 1; i < (1 << N); i++){ ans += r[i]; } cout << ans << endl; }