#include <bits/stdc++.h>
using namespace std;
void fio() {}
void pti() {
  double timeuse = clock() * 1000.0 / CLOCKS_PER_SEC;
  cerr << "Timeuse " << timeuse << "ms" << endl;
}
void end() { exit(0); }
namespace io {
const int SIZ = 55;
int que[SIZ], op, qr;
char ch;
template <class I>
inline void gi(I& w) {
  ch = getchar(), op = 1, w = 0;
  while (!isdigit(ch)) {
    if (ch == '-') op = -1;
    ch = getchar();
  }
  while (isdigit(ch)) {
    w = w * 10 + ch - '0';
    ch = getchar();
  }
  w *= op;
}
template <typename T, typename... Args>
inline void gi(T& t, Args&... args) {
  gi(t);
  gi(args...);
}
template <class I>
inline void print(I w) {
  qr = 0;
  if (!w) putchar('0');
  if (w < 0) putchar('-'), w = -w;
  while (w) que[++qr] = w % 10 + '0', w /= 10;
  while (qr) putchar(que[qr--]);
}
}  // namespace io
using io::gi;
using io::print;
const int N = 5005;
int n, m;
int a[N];
int main() {
  fio();
  gi(n, m);
  int t = 0;
  for (int i = 1; i <= n; ++i) {
    a[i] = i;
    t += (i - 1) >> 1;
    if (t >= m) {
      int res = (t - m) << 1;
      a[i] += res;
      for (int j = n, s = 1e9; j > i; --j, s -= a[i] + 1) a[j] = s;
      for (int j = 1; j <= n; ++j) print(a[j]), putchar(' ');
      end();
    }
  }
  print(-1);
  end();
}
