import sys,random from collections import deque from heapq import heappush,heappop input = lambda :sys.stdin.readline().rstrip() mi = lambda :map(int,input().split()) li = lambda :list(mi()) N,W = mi() A = li() S = [0 for i in range(1<<N)] for n in range(N): t = 2**n for i in range(t,2*t): S[i] = A[n] + S[i-t] res = 0 for bit in range(1,1<<N): tmp = bit flag = False while tmp: k = S[tmp]//2 + S[bit-tmp] if k==W: flag = True tmp = (tmp-1)&bit if S[bit]==W: flag = True res += flag print(res)