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.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.TreeMap;






public class Main {
	  static int MOD=1000000007;
	  static long p[][]=new long[405][405];
	  static long sum[][]=new long[405][405];
	  static long dp[][]=new long[61][25005];
	  static long a[]=new long[405];
	  static long b[]=new long[405];
      public static void main(String[] args) {
    	  Scanner in=new Scanner( new BufferedReader(new InputStreamReader(System.in)))	;
          int n=in.nextInt(),m=in.nextInt();
         
          for(int i=0;i<=60;i++)
          {
        	 dp[i]=new long[25005];
          }
          for(int i=1;i<=n;i++)
          {
        	  a[i]=in.nextInt();
          }
          int v=m*n;
          
      
          dp[0][0]=1;
          for(int i=1;i<=n;i++)
          {
        	 
        	for(int j=i;j>=0;j--)
        	{
        		
        		for(int k=v;k>=a[i];k--)
        			{
        			//System.out.println(j+" "+i+" "+(k-a[i]));
        			if(j==0) continue;
        			dp[j][k]+=dp[j-1][k-(int)(a[i])];
        			
        			}
        	}
          }
          long ans=0;
          for(int i=1;i<=n;i++)
          {
        	  ans+=dp[i][m*i];
          }
          System.out.print(ans);
    	  return;
      }
}
