// 최소 하나의 원소는 있어야 한다.
let p = readLine()!.split(separator: " ").map{Int(String($0))!}
let (n,end) = (p[0],p[1])
let arr = readLine()!.split(separator: " ").map{Int(String($0))!}
var visited = [Bool](repeating: false, count: n+1)
var result = 0
func dfs(_ start:Int,_ cnt:Int,_ num:Int) {
if num == end && 0 < cnt {
result += 1
}
for i in start..<n {
if !visited[i] {
visited[i] = true
dfs(i, cnt+1, num+arr[i])
visited[i] = false
}
}
}
dfs(0, 0, 0)
print(result)