N,W = map(int,input().split()) A = list(map(int,input().split())) ans = 0 for i in range(2**N): bit = bin(i)[2:].zfill(N) B = [] for j in range(N): if bit[j] == '1': B.append(A[j]) M = len(B) flg = False for j in range(2**M): bit = bin(j)[2:].zfill(M) c = 0 for j in range(M): if bit[j] == '1': c += B[j]//2 else: c += B[j] if c == W: flg = True break if flg: ans += 1 print(ans)