#include <bits/stdc++.h>
using namespace std;
const int maxN = 1000005;
int n, M;
int a[maxN];
int X[maxN] = {0};
int rescount = 0;
void solve(int idx, int current_sum) {
if (idx > n) {
if (current_sum == M){
rescount++;
}
return;
}
int remain = 0;
for(int i = idx + 1; i <= n; i++) {
remain += a[i];
}
int rangbuoc = (M - current_sum - remain) / a[idx];
for(int i = 1; i <= rangbuoc; i++) {
X[idx] = i;
solve(idx + 1, current_sum + a[idx] * i);
X[idx] = 0;
}
}
int main() {
cin >> n >> M;
for(int i = 1; i <= n; i++) {
cin >> a[i];
}
solve(1, 0);
cout << rescount;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBtYXhOID0gMTAwMDAwNTsKaW50IG4sIE07CmludCBhW21heE5dOwppbnQgWFttYXhOXSA9IHswfTsKaW50IHJlc2NvdW50ID0gMDsKdm9pZCBzb2x2ZShpbnQgaWR4LCBpbnQgY3VycmVudF9zdW0pIHsKICAgIGlmIChpZHggPiBuKSB7CiAgICAgICAgaWYgKGN1cnJlbnRfc3VtID09IE0pewogICAgICAgICAgICByZXNjb3VudCsrOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CiAgICBpbnQgcmVtYWluID0gMDsKICAgIGZvcihpbnQgaSA9IGlkeCArIDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgcmVtYWluICs9IGFbaV07CiAgICB9CiAgICBpbnQgcmFuZ2J1b2MgPSAoTSAtIGN1cnJlbnRfc3VtIC0gcmVtYWluKSAvIGFbaWR4XTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gcmFuZ2J1b2M7IGkrKykgewogICAgICAgIFhbaWR4XSA9IGk7CiAgICAgICAgc29sdmUoaWR4ICsgMSwgY3VycmVudF9zdW0gKyBhW2lkeF0gKiBpKTsKICAgICAgICBYW2lkeF0gPSAwOwogICAgfQp9CmludCBtYWluKCkgewogICAgY2luID4+IG4gPj4gTTsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgY2luID4+IGFbaV07CiAgICB9CiAgICBzb2x2ZSgxLCAwKTsKICAgIGNvdXQgPDwgcmVzY291bnQ7Cn0=