from bisect import bisect_right from collections import defaultdict import sys input = sys.stdin.readline n, S = map(int, input().split()) a = list(map(int, input().split())) sums = [] def rec(i, s, m): if i == m: if s <= S: sums.append(s) return k = 1 while s+a[i]**k <= S: rec(i+1, s+a[i]**k, m) k += 1 rec(0, 0, n//2) sums.sort() ans = 0 def rec2(i, s): global ans if i == n: if s <= S: ans += bisect_right(sums, S-s) return k = 1 while s+a[i]**k <= S: rec2(i+1, s+a[i]**k) k += 1 rec2(n//2, 0) print(ans)