#define forn(i, n) for (int i = 0; i < (int)(n); i++)
int main() {
int n, W;
cin >> n >> W;
int w[n];
forn(i, n)
cin >> w[i];
int is[W + 1], p[W + 1];
// is[x] -- можно ли мы уже
// набрать вес x
memset(is, 0, sizeof(is));
is[0] = 1;
// Time = O(nW), Memory = O(W)
// + восстановление ответа
forn(i, n) // 0 <= i < n
// forn(x, W - w[i] + 1) -- каждую вещь берет сколько угодно раз
for (int x = W - w[i]; x >= 0; x--)
if (is[x] && !is[x + w[i]])
is[x + w[i]] = 1, p[x + w[i]] = i;
// is[i][] --> is[i+1][]
// if (is[x]) -- не работает, пример: 1 2 3
int max_w = W;
while (!is[max_w])
max_w--;
while (max_w > 0)
printf("%d ", p[max_w] + 1, max_w -= w[p[max_w]]);
}