#include <bits/stdc++.h>
long long read() {
  long long f = 1, x = 0;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
  return f * x;
}
long long max(long long a, long long b) { return a > b ? a : b; }
long long min(long long a, long long b) { return a < b ? a : b; }
bool umax(long long& a, long long b) {
  if (b > a) return a = b, 1;
  return 0;
}
bool umin(long long& a, long long b) {
  if (b < a) return a = b, 1;
  return 0;
}
long long a[200011];
int main() {
  long long n = read(), m = read(), k = -1;
  for (long long i = 1; i <= n; ++i) {
    a[i] = a[i - 1] + (i - 1) / 2;
    if (a[i] >= m) {
      k = i;
      break;
    }
  }
  if (m == 0) {
    long long cur = 1;
    for (long long i = 1; i <= n; ++i) {
      cur += 2;
      std::cout << cur << " ";
    }
    return 0;
  }
  if (k == -1) {
    puts("-1");
    return 0;
  }
  bool flag = 0;
  if (a[k] > m) --k, flag = 1;
  for (long long i = 1; i <= k; ++i) std::cout << i << " ";
  long long f = k / 2, cur = k;
  if (flag) {
    ++cur;
    while (a[k] + f > m) --f, cur += 2;
    std::cout << cur << " ";
    ++k;
  }
  long long t = cur + 1;
  for (long long i = k + 1; i <= n; ++i) std::cout << (cur += t) << " ";
  return 0;
}
