#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const int D = 1e4;
bool check(vector<int> &c, int n, int m) {
  if (c.size() != n) return false;
  int pr = -1;
  for (int first : c) {
    if (first < 1 || first > INF) return false;
    if (first < pr) return false;
    pr = first;
  }
  int now = 0;
  for (int i = 0; i < (int)c.size(); i++) {
    for (int j = i + 1; j < (int)c.size(); j++) {
      for (int k = j + 1; k < (int)c.size(); k++) {
        now += (c[i] + c[j] == c[k]);
      }
    }
  }
  return now == m;
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n, m;
  cin >> n >> m;
  int cnt = 0;
  vector<int> a(n);
  iota(a.begin(), a.end(), 1);
  for (int i = 1; i <= n; i++) {
    for (int j = i + 1; j <= n; j++) {
      cnt += (i + j <= n);
    }
  }
  if (cnt < m) {
    cout << "-1\n";
    return 0;
  }
  vector<int> b;
  int kek = INF;
  for (int i = n; i >= 1; i--) {
    if (cnt == m) break;
    int d = (i - 1) / 2;
    if (cnt - d >= m) {
      cnt -= d;
      a.pop_back();
      b.push_back(kek);
      kek -= D;
      continue;
    }
    a.pop_back();
    int now = cnt - d;
    for (int first = 1;; first++) {
      int dd = (i - first - 1) / 2;
      if (now + dd == m) {
        a.push_back(i + first);
        break;
      }
    }
    break;
  }
  vector<int> c;
  for (int first : a) {
    cout << first << " ";
    c.push_back(first);
  }
  reverse(b.begin(), b.end());
  for (int first : b) {
    cout << first << " ";
    c.push_back(first);
  }
  cout << endl;
}
