#include <bits/stdc++.h>
namespace fastIO {
static bool IOerror = 0;
inline char nc() {
  static char buf[100000], *p1 = buf + 100000, *pend = buf + 100000;
  if (p1 == pend) {
    p1 = buf;
    pend = buf + fread(buf, 1, 100000, stdin);
    if (pend == p1) {
      IOerror = 1;
      return -1;
    }
  }
  return *p1++;
}
inline bool blank(char ch) {
  return ch == ' ' || ch == '\n' || ch == '\r' || ch == '\t';
}
template <class T>
inline bool read(T& x) {
  bool sign = 0;
  char ch = nc();
  x = 0;
  for (; blank(ch); ch = nc())
    ;
  if (IOerror) return false;
  if (ch == '-') sign = 1, ch = nc();
  for (; ch >= '0' && ch <= '9'; ch = nc()) x = x * 10 + ch - '0';
  if (sign) x = -x;
  return true;
}
inline bool read(unsigned long long& x) {
  char ch = nc();
  x = 0;
  for (; blank(ch); ch = nc())
    ;
  if (IOerror) return false;
  for (; ch >= '0' && ch <= '9'; ch = nc()) x = x * 10 + ch - '0';
  return true;
}
inline bool read(unsigned int& x) {
  char ch = nc();
  x = 0;
  for (; blank(ch); ch = nc())
    ;
  if (IOerror) return false;
  for (; ch >= '0' && ch <= '9'; ch = nc()) x = x * 10 + ch - '0';
  return true;
}
inline bool read(double& x) {
  bool sign = 0;
  char ch = nc();
  x = 0;
  for (; blank(ch); ch = nc())
    ;
  if (IOerror) return false;
  if (ch == '-') sign = 1, ch = nc();
  for (; ch >= '0' && ch <= '9'; ch = nc()) x = x * 10 + ch - '0';
  if (ch == '.') {
    double tmp = 1;
    ch = nc();
    for (; ch >= '0' && ch <= '9'; ch = nc())
      tmp /= 10.0, x += tmp * (ch - '0');
  }
  if (sign) x = -x;
  return true;
}
inline bool read(char* q2) {
  char ch = nc();
  for (; blank(ch); ch = nc())
    ;
  if (IOerror) return false;
  for (; !blank(ch) && !IOerror; ch = nc()) *q2++ = ch;
  *q2 = 0;
  return true;
}
inline bool read(char& c) {
  for (c = nc(); blank(c); c = nc())
    ;
  if (IOerror) {
    c = -1;
    return false;
  }
  return true;
}
inline bool read(std::string& q2) {
  q2.clear();
  char ch = nc();
  for (; blank(ch); ch = nc())
    ;
  if (IOerror) return false;
  for (; !blank(ch) && !IOerror; ch = nc()) q2 += ch;
  return true;
}
template <class T, class... U>
bool read(T& h, U&... t) {
  return read(h) && read(t...);
}
struct Ostream_fwrite {
  char *buf, *p1, *pend;
  Ostream_fwrite() {
    buf = new char[100000];
    p1 = buf;
    pend = buf + 100000;
  }
  inline void out(char ch) {
    if (p1 == pend) {
      fwrite(buf, 1, 100000, stdout);
      p1 = buf;
    }
    *p1++ = ch;
  }
  template <class T>
  inline void print(T x) {
    static char q2[41], *s1;
    s1 = q2;
    if (!x) *s1++ = '0';
    if (x < 0) out('-'), x = -x;
    while (x) *s1++ = x % 10 + '0', x /= 10;
    while (s1-- != q2) out(*s1);
  }
  inline void print(char ch) { out(ch); }
  inline void print(unsigned long long x) {
    static char q2[41], *s1;
    s1 = q2;
    if (!x) *s1++ = '0';
    while (x) *s1++ = x % 10 + '0', x /= 10;
    while (s1-- != q2) out(*s1);
  }
  inline void print(unsigned int x) {
    static char q2[41], *s1;
    s1 = q2;
    if (!x) *s1++ = '0';
    while (x) *s1++ = x % 10 + '0', x /= 10;
    while (s1-- != q2) out(*s1);
  }
  inline void print(double x, int y = 6) {
    static long long mul[] = {1,
                              10,
                              100,
                              1000,
                              10000,
                              100000,
                              1000000,
                              10000000,
                              100000000,
                              1000000000,
                              10000000000LL,
                              100000000000LL,
                              1000000000000LL,
                              10000000000000LL,
                              100000000000000LL,
                              1000000000000000LL,
                              10000000000000000LL,
                              100000000000000000LL};
    if (x < -1e-12) out('-'), x = -x;
    x *= mul[y];
    long long x1 = (long long)floor(x);
    if (x - floor(x) >= 0.5) ++x1;
    long long x2 = x1 / mul[y], x3 = x1 - x2 * mul[y];
    print(x2);
    if (y > 0) {
      out('.');
      for (size_t i = 1; i < y && x3 * mul[i] < mul[y]; out('0'), ++i)
        ;
      print(x3);
    }
  }
  inline void print(char* q2) {
    while (*q2) out(*q2++);
  }
  inline void print(const char* q2) {
    while (*q2) out(*q2++);
  }
  inline void print(std::string q2) { print(q2.c_str()); }
  inline void flush() {
    if (p1 != buf) {
      fwrite(buf, 1, p1 - buf, stdout);
      p1 = buf;
    }
  }
  ~Ostream_fwrite() { flush(); }
} Ostream;
template <class T>
inline void print(T x) {
  Ostream.print(x);
}
template <class T>
inline void println(T x) {
  Ostream.print(x);
  Ostream.out('\n');
}
inline void print(double x, int y = 6) { Ostream.print(x, y); }
inline void println(double x, int y = 6) {
  Ostream.print(x, y);
  Ostream.out('\n');
  ;
}
template <class T, class... U>
void print(const T& h, const U&... t) {
  print(h);
  Ostream.out(' ');
  ;
  print(t...);
}
template <class T, class... U>
void println(const T& h, const U&... t) {
  print(h);
  Ostream.out(' ');
  ;
  println(t...);
}
inline void flush() { Ostream.flush(); }
};  // namespace fastIO
using namespace fastIO;
using namespace std;
const int32_t MAXN = 1e5 + 5;
long long a[MAXN];
int n;
long long k;
bool check(long long x) {
  long long sum = 0;
  for (int i = 1; i <= n; i++) {
    sum += min(x, a[i]);
  }
  return sum <= k;
}
queue<int> q1;
queue<int> q2;
int main() {
  read(n, k);
  long long sum = 0;
  for (int i = 1; i <= n; i++) {
    read(a[i]);
    sum += a[i];
  }
  if (sum < k) {
    println(-1);
  } else {
    long long left = 0;
    long long right = k;
    while (left <= right) {
      long long mid = (left + right) >> 1;
      if (check(mid))
        left = mid + 1;
      else
        right = mid - 1;
    }
    long long MAX_round = left - 1;
    for (int i = 1; i <= n; i++) {
      k -= min(a[i], MAX_round);
      a[i] -= min(a[i], MAX_round);
    }
    for (int i = 1; i <= n; i++) {
      if (k == 0 && a[i]) q2.push(i);
      if (k && a[i]) {
        k--;
        a[i]--;
        if (a[i]) q1.push(i);
      }
    }
    while (!q2.empty()) {
      print(q2.front());
      q2.pop();
      if (!q2.empty() || !q1.empty()) print(' ');
    }
    while (!q1.empty()) {
      print(q1.front());
      q1.pop();
      if (!q1.empty()) print(' ');
    }
  }
  fastIO::flush();
  return 0;
}
