이반이 마침내 대학에 합격했다. 이반의 교육 과정에는 정확히 $N$개의 시험이 있다. 시험마다 난이도가 다를 수 있어서, 서로 다른 시험은 서로 다른 점수를 줄 수 있다.
이반이 모든 시험을 볼 필요는 없지만, 시험에서 얻는 점수는 최종 학점의 일부이므로 중요하다. 좋은 학점을 받으려면 총 $T$점 이상이 필요하다. 이반은 자신의 실력을 확신하므로, 어떤 시험을 보기로 하면 그 시험의 만점을 받는다.
이반은 얻는 점수의 합이 $T$점 이상이 되도록 어떤 시험을 보고(그리고 어떤 시험을 건너뛸지) 고르는 방법이 몇 가지인지 알고 싶다. 선택한 시험의 집합이 다르면 서로 다른 방법으로 센다. 아무 시험도 보지 않으면 얻는 점수는 $0$점이다.
이 방법의 수를 구하는 프로그램을 작성하시오.
첫째 줄에 두 양의 정수 $N$ ($N \le 36$)과 $T$가 주어진다.
둘째 줄에 각 시험이 주는 점수를 나타내는 $N$개의 양의 정수가 공백 하나로 구분되어 주어진다. 각 점수는 $10^{13}$ 이하이다.
얻은 점수의 합이 $T$ 이상이 되도록 이반이 시험의 집합을 고르는 방법의 수를 정수 하나로 출력한다.