Problem:
Score : 300 points

Problem Statement

Tak has N cards. On the i-th (1 \leq i \leq N) card is written an integer x_i.
He is selecting one or more cards from these N cards, so that the average of the integers written on the selected cards is exactly A.
In how many ways can he make his selection?

Constraints

1 \leq N \leq 50

1 \leq A \leq 50

1 \leq x_i \leq 50

N,\,A,\,x_i are integers.

Partial Score

200 points will be awarded for passing the test set satisfying 1 \leq N \leq 16.

Input

The input is given from Standard Input in the following format:

N A
x_1 x_2 ... x_N

Output

Print the number of ways to select cards such that the average of the written integers is exactly A.

Sample Input 1

4 8
7 9 8 9

Sample Output 1

5

The following are the 5 ways to select cards such that the average is 8:

Select the 3-rd card.

Select the 1-st and 2-nd cards.

Select the 1-st and 4-th cards.

Select the 1-st, 2-nd and 3-rd cards.

Select the 1-st, 3-rd and 4-th cards.

Sample Input 2

3 8
6 6 9

Sample Output 2

0

Sample Input 3

8 5
3 6 2 8 7 6 5 9

Sample Output 3

19

Sample Input 4

33 3
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3

Sample Output 4

8589934591

The answer may not fit into a 32-bit integer.

Solution in Ruby (2.3.3) (judge verdict: Time Limit Exceeded)

N, A = gets.split.map(&:to_i)
xs = gets.split.map(&:to_i)

### DFS: Depth-First Search = 深さ優先探索
# スタックによる実装
def iterative_dfs(array, target)
  count = 0
  # スタックとなる配列を用意し、初期状態である空配列を格納する
  stack = [[]]
  until stack.empty?
    # スタックから1つ取り出す（末尾から取り出すのでpopを使う）
    current = stack.pop

    if current.length == array.size
      # 頂点に達した際の処理
      current = current.compact
      count += 1 if current.size > 0 \
                  && current.inject(:+) % current.size == 0 \
                  && current.inject(:+) / current.size == target
    else
      # 分岐処理
      stack << current + [nil]
      stack << current + [array[current.size]]
    end
  end
  count
end

puts iterative_dfs(xs, A)