#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;
using P = pair<int, int>;
constexpr ld eps = 1e-12;
constexpr int inf = numeric_limits<int>::max() / 2;
constexpr int mod = 1e9 + 7;
template <typename T>
void printv(const vector<T> &v) {
  int sz = v.size();
  for (int i = 0; i < sz; i++) {
    cout << v[i] << " \n"[i == sz - 1];
  }
}
const int MAX_N = 5010;
int main() {
  cin.tie(0);
  ios::sync_with_stdio(false);
  ll n, m;
  cin >> n >> m;
  vector<ll> ma(MAX_N);
  for (int i = 0; i < MAX_N - 1; i++) {
    ma[i + 1] = ma[i] + i / 2;
  }
  if (m > ma[n]) {
    cout << -1 << endl;
    return 0;
  }
  vector<ll> ret(n);
  for (int i = 0; i < n; i++) {
    int pre = 0;
    if (i) pre = ret[i - 1];
    if (ma[i + 1] <= m) {
      ret[i] = i + 1;
      continue;
    }
    map<ll, ll> cnt;
    for (int j = 0; j < i; j++) {
      for (int k = j + 1; k < i; k++) {
        cnt[ret[j] + ret[k]]++;
      }
    }
    for (auto p : cnt) {
      if (p.first <= pre) continue;
      if (p.second != m - ma[i]) continue;
      ret[i] = p.first;
      break;
    }
    break;
  }
  for (int i = n - 1; i >= 0; i--) {
    if (ret[i] != 0) break;
    ret[i] = 1e9 - 11000 * (n - 1 - i);
  }
  printv(ret);
}
