#include <bits/stdc++.h>
using namespace std;
struct Nod {
  int val, pos;
  long long end;
} nod[100010];
int n, c[100010];
bool over[100010];
long long k;
bool cmp(Nod n1, Nod n2) {
  if (n1.val != n2.val) return n1.val < n2.val;
  return n1.pos < n2.pos;
}
int read(int pos) {
  int res = 0;
  while (pos) {
    res += c[pos];
    pos -= pos & -pos;
  }
  return res;
}
void insert(int pos, int val) {
  while (pos <= n) {
    c[pos] += val;
    pos += pos & -pos;
  }
}
vector<int> vec;
int main() {
  long long sum = 0;
  scanf("%d%I64d", &n, &k);
  for (int i = 1; i <= n; ++i) {
    scanf("%d", &nod[i].val);
    sum += nod[i].val;
    nod[i].pos = i;
  }
  if (sum < k) {
    puts("-1");
    return 0;
  } else if (sum == k) {
    puts("");
    return 0;
  }
  sort(nod + 1, nod + 1 + n, cmp);
  for (int i = 1; i <= n; ++i) insert(i, 1);
  long long cur = 0;
  for (int i = 1, t = 0, rem = n; i <= n;) {
    int j = i;
    while (j + 1 <= n && nod[j + 1].val == nod[i].val) ++j;
    for (int k = i; k <= j; ++k)
      nod[k].end =
          cur + (long long)(nod[i].val - t - 1) * rem + read(nod[k].pos);
    for (int k = i; k <= j; ++k) insert(nod[k].pos, -1);
    cur += (long long)(nod[i].val - t) * rem;
    t = nod[i].val;
    rem -= (j - i + 1);
    i = j + 1;
  }
  memset(over, false, sizeof(over));
  for (int i = 1; i <= n; ++i)
    if (nod[i].end <= k) over[nod[i].pos] = true;
  int last = 0;
  long long temp = 0;
  for (int i = 1; i <= n; ++i)
    if (nod[i].end <= k) {
      last = nod[i].pos;
      temp = nod[i].end;
    }
  for (int i = last + 1; i <= n; ++i)
    if (!over[i]) vec.push_back(i);
  for (int i = 1; i < last; ++i)
    if (!over[i]) vec.push_back(i);
  k -= temp;
  k %= vec.size();
  bool first = true;
  for (int i = k; i < vec.size(); ++i) {
    if (!first)
      putchar(' ');
    else
      first = false;
    printf("%d", vec[i]);
  }
  for (int i = 0; i < k; ++i) {
    if (!first)
      putchar(' ');
    else
      first = false;
    printf("%d", vec[i]);
  }
  puts("");
  return 0;
}
