import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
InputStream in = System.in;
Reader isr = new InputStreamReader(in);
BufferedReader br = new BufferedReader(isr);
String[] input;
int whatNumber = 0;
int minlength = 0;
try {
input = br.readLine().split(" ");
whatNumber = Integer.parseInt(input[0]);
minlength = Integer.parseInt(input[1]);
} catch (IOException e) {
// e.printStackTrace();
}
for(int i=minlength ; i <=100 ; i++) {
if(getSolution(i, whatNumber)) {
// log("getSolution(%d, %d)", i, whatNumber);
printAnswear(i, whatNumber);
break;
}
if(i==100) {
log("-1");
}
}
}
// n : n 개의 연속 되는 수
public static boolean getSolution(int n, int result) {
// n = 1 일 때 k (단, k는 자연수 )
// n = 2 일 때 2k + 1
// n = n 일 때 nk + n(n-1)/2
// result = nk + n(n-1)/2
// result - n(n-1)/2 = nk
// [result - n(n-1)/2] % n == 0 이라면 k정수가 존재
int x = result - n*(n-1)/2;
if(x < 0) {
return false;
}
boolean okay = (x % n == 0) ;
return okay;
}
public static void printAnswear(int n, int result) {
int first = (result - n*(n-1)/2) / n;
String Str = "";
for(int i=0; i<n; i++) {
Str += String.format("%d ", first+i);
}
System.out.println(Str.trim());
}
public static void log(String input) { System.out.println(input); }
public static void log(String input, Object ...args) {
System.out.println(String.format(input, args));
}
}