#include <bits/stdc++.h>
#pragma comment(linker, "/stack:247474112")
#pragma GCC optimize("Ofast")
using namespace std;
const long long LLINF = 0x3f3f3f3f3f3f3f3f;
const int INF = 0x3f3f3f3f;
template <typename T>
struct cmp {
  bool operator()(const T &a, const T &b) {
    return a.first == b.first ? a.second > b.second : a.first < b.first;
  }
};
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n, m;
  cin >> n >> m;
  if (m > n * (n - 1) / 2) {
    cout << -1 << endl;
    return 0;
  }
  vector<int> A(n);
  unordered_map<int, int> cnt;
  priority_queue<pair<int, int>, vector<pair<int, int>>, cmp<pair<int, int>>> Q;
  A[0] = 1, A[1] = 2;
  for (int i = 2; i < n; ++i) {
    if (m >= i / 2) {
      m -= i / 2;
      A[i] = i + 1;
    } else if (m == 0) {
      A[i] = 1e8 + 1e4 * i + 1;
    } else {
      int len = m * 2;
      A[i] = A[i - 1] + A[i - len];
      m = 0;
    }
  }
  if (m != 0) {
    cout << -1 << endl;
    return 0;
  }
  for (auto x : A) cout << x << " ";
  cout << endl;
}
