import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class 실험실 {
	static int N;
	static int S;
	static int[] arr;
	static boolean[] state;
	static int count =0;
	
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		N = Integer.parseInt(st.nextToken());
		S = Integer.parseInt(st.nextToken());
		arr =  new int[N];
		state = new boolean[N];
		st = new StringTokenizer(br.readLine());
		for(int i = 0 ; i < N ; i ++) {
			arr[i]= Integer.parseInt(st.nextToken());
		}
		powerset(arr, state, 0, arr.length);
		if(S==0) {
			System.out.print(--count);
		}else {
		System.out.print(count);
		}
		
	}
	
	static void powerset(int[] arr , boolean[] state, int index , int end) {
		if(index>=end) {
			int sum = 0;
			for(int j = 0 ; j < end; j++) {
				if(state[j]) {
					sum+=arr[j];
				}
			}
			if(sum == S) {
				count++;
			}
			
			return;
		}
		state[index]=false;
		powerset(arr,state,index+1,end);
		
		state[index]=true;
		powerset(arr,state,index+1,end);
		
	}
}
