#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]]);
}