#include<bits/stdc++.h>
using namespace std;
template<typename X, typename Y>
bool chmax(X& a, Y b) { return (a < b) ? a = b, 1 : 0; }
template<typename X, typename Y>
bool chmin(X& a, Y b) { return (a > b) ? a = b, 1 : 0; }
using ll = long long;
using ull = unsigned long long;
const int N = 5e3+5;
int n, P, a[N];
ull dp[N];
// unsigned long long: [0, 2^64], > 2^64 tu mod voi 2^64
void solve() {
cin >> n >> P;
for (int i = 1; i <= n; i++) cin >> a[i];
dp[0] = 1;
for (int i = 1; i <= n; i++)
if (a[i] < P)
for (int j = P; j >= a[i]; j--)
dp[j] += dp[j - a[i]];
vector<int> ans;
for (int i = 1; i <= n; i++) {
if (a[i] >= P) {
ans.push_back(i);
continue;
}
for (int j = a[i]; j <= P; j++) dp[j] -= dp[j - a[i]];
bool f = false;
for (int j = max(0, P - a[i]); j < P; j++)
if (dp[j] > 0) {
f = true;
break;
}
if (f) ans.push_back(i);
for (int j = P; j >= a[i]; j--) dp[j] += dp[j - a[i]];
}
for (int x : ans) cout << x << ' ';
cout << '\n';
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
#define TASK "BAI2"
if (fopen(TASK".INP", "r")) {
freopen(TASK".INP", "r", stdin);
freopen(TASK".OUT", "w", stdout);
}
int tests = 1; // cin >> tests;
while (tests--) solve();
#ifdef LOCAL
cerr << "\nTime elapsed: " << 1.0 * clock() / CLOCKS_PER_SEC << " s.\n";
#endif
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnRlbXBsYXRlPHR5cGVuYW1lIFgsIHR5cGVuYW1lIFk+CmJvb2wgY2htYXgoWCYgYSwgWSBiKSB7IHJldHVybiAoYSA8IGIpID8gYSA9IGIsIDEgOiAwOyB9Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBYLCB0eXBlbmFtZSBZPgpib29sIGNobWluKFgmIGEsIFkgYikgeyByZXR1cm4gKGEgPiBiKSA/IGEgPSBiLCAxIDogMDsgfQoKdXNpbmcgbGwgPSBsb25nIGxvbmc7CnVzaW5nIHVsbCA9IHVuc2lnbmVkIGxvbmcgbG9uZzsKCmNvbnN0IGludCBOID0gNWUzKzU7CgppbnQgbiwgUCwgYVtOXTsKdWxsIGRwW05dOwovLyB1bnNpZ25lZCBsb25nIGxvbmc6IFswLCAyXjY0XSwgPiAyXjY0IHR1IG1vZCB2b2kgMl42NAoKdm9pZCBzb2x2ZSgpIHsKICAgIGNpbiA+PiBuID4+IFA7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOwogICAgZHBbMF0gPSAxOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIGlmIChhW2ldIDwgUCkKICAgICAgICAgICAgZm9yIChpbnQgaiA9IFA7IGogPj0gYVtpXTsgai0tKQogICAgICAgICAgICAgICAgZHBbal0gKz0gZHBbaiAtIGFbaV1dOwogICAgdmVjdG9yPGludD4gYW5zOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaWYgKGFbaV0gPj0gUCkgewogICAgICAgICAgICBhbnMucHVzaF9iYWNrKGkpOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgZm9yIChpbnQgaiA9IGFbaV07IGogPD0gUDsgaisrKSBkcFtqXSAtPSBkcFtqIC0gYVtpXV07IAogICAgICAgIGJvb2wgZiA9IGZhbHNlOwogICAgICAgIGZvciAoaW50IGogPSBtYXgoMCwgUCAtIGFbaV0pOyBqIDwgUDsgaisrKQogICAgICAgICAgICBpZiAoZHBbal0gPiAwKSB7CiAgICAgICAgICAgICAgICBmID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgaWYgKGYpIGFucy5wdXNoX2JhY2soaSk7CiAgICAgICAgZm9yIChpbnQgaiA9IFA7IGogPj0gYVtpXTsgai0tKSBkcFtqXSArPSBkcFtqIC0gYVtpXV07CiAgICB9CiAgICBmb3IgKGludCB4IDogYW5zKSBjb3V0IDw8IHggPDwgJyAnOwogICAgY291dCA8PCAnXG4nOwp9CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOwoKICAgICNkZWZpbmUgVEFTSyAiQkFJMiIKICAgIGlmIChmb3BlbihUQVNLIi5JTlAiLCAiciIpKSB7CiAgICAgICAgZnJlb3BlbihUQVNLIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgICAgICBmcmVvcGVuKFRBU0siLk9VVCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KCiAgICBpbnQgdGVzdHMgPSAxOyAvLyBjaW4gPj4gdGVzdHM7CiAgICB3aGlsZSAodGVzdHMtLSkgc29sdmUoKTsKCiAgICAjaWZkZWYgTE9DQUwKICAgIGNlcnIgPDwgIlxuVGltZSBlbGFwc2VkOiAiIDw8IDEuMCAqIGNsb2NrKCkgLyBDTE9DS1NfUEVSX1NFQyA8PCAiIHMuXG4iOwogICAgI2VuZGlmCiAgICByZXR1cm4gMDsKfQ==