#import <stdio.h>
#define MAXINDEX 2500
typedef long long INT;
INT getValue(INT *A, INT i){
    return A[i+MAXINDEX+1];
}
void setValue(INT *A, INT i, INT value){
    A[i+MAXINDEX+1] = value;
}
int main(){
    INT N,M;
    scanf("%lld %lld",&N,&M);
    INT A[2*MAXINDEX+2] = {0};
    INT B[2*MAXINDEX+2] = {0};
    setValue(A,0,1);
    INT *C = A;
    INT *D = B;
    for(INT i=0;i<N;i++){
        INT x;
        scanf("%lld",&x);
        for(INT j=-MAXINDEX;j<=MAXINDEX;j++){
            INT k = j - (x-M);
            setValue(D, j, getValue(C,j) + getValue(C,k));
        }
        INT *E = D;
        D = C;
        C = E;
    }
    printf("%lld",getValue(C,0)-1);
}
