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.

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.

Examples

Input

4 8
7 9 8 9


Output

5


Input

3 8
6 6 9


Output

0


Input

8 5
3 6 2 8 7 6 5 9


Output

19


Input

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


Output

8589934591
import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int A = sc.nextInt();
        long[][] dp = new long[3000][N+1];
        dp[0][0] =1;
        for (int i=0;i<N;i++) {
            int x = sc.nextInt();
            long[][] arr = new long[3000][N+1];
            for (int k=0;k<N+1;k++) {
                for (int j=0;j<3000;j++) {
                    arr[j][k] = dp[j][k];
                }
            }
            for (int k=0;k<N;k++) {
                for (int j=0;j<2600;j++) {
                    // dp[j+x][k+1] += dp[j][k];
                    arr[j+x][k+1] += dp[j][k];
                }
            }
            for (int k=0;k<N+1;k++) {
                for (int j=0;j<3000;j++) {
                    dp[j][k] = arr[j][k];
                }
            }
            // long[] arr = new long[3000];
            // for (int j=0;j<2600;j++) {
            //     arr[j] += dp[j];
            //     arr[j+x] += dp[j];
            // }
            // for (int j=0;j<3000;j++) {
            //     dp[j] = arr[j];
            // }
        }
        long ans = 0L;
        for (int i=1;i<3000;i++) {
            // if (i%A==0) ans+=dp[i];
            for (int j=1;j<N+1;j++) {
                if (j*A==i) ans += dp[i][j];
            }
        }
        for (int i=0;i<30;i++) {
            StringBuilder sb = new StringBuilder();
            for (int j=0;j<N;j++) {
                sb.append(dp[i][j]);
                sb.append(" ");
            }
            // System.out.println(sb);
        }
        // System.out.println(Arrays.toString(Arrays.copyOf(dp, 50)));
        System.out.println(ans);
    }
}