#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000;
bool p[maxn];
vector<int> P;
void Prime() {
  for (int i = 0; i < maxn; i++) p[i] = 0;
  for (int i = 3; i < maxn; i += 2) p[i] = 1;
  P.push_back(2);
  for (int i = 3; i < maxn; i += 2)
    if (p[i]) {
      P.push_back(i);
      for (int j = i + i; j < maxn; j += i) p[j] = false;
    }
}
long long find(long long target, long long n) {
  long long ans = 0;
  for (long long i = 1; i * i <= n; i++)
    if (n % i == 0) {
      long long j = n / i;
      if (i <= target && i > ans) ans = i;
      if (j <= target && j > ans) ans = j;
    }
  return ans;
}
long long cal(long long k) {
  if (k % 2 == 0)
    return (k / 2) * (k + 1);
  else
    return ((k + 1) / 2) * k;
}
int main() {
  long long n, k;
  Prime();
  while (scanf("%lld%lld", &n, &k) == 2) {
    if (k > 1000000 || cal(k) > n)
      puts("-1");
    else {
      long long l = n / (k * (k + 1) / 2);
      l = find(l, n);
      long long sum = n / l;
      for (long long i = 1; i < k; i++) {
        printf("%lld ", i * l);
        sum -= i;
      }
      if (sum)
        printf("%lld\n", sum * l);
      else
        printf("\n");
    }
  }
  return 0;
}
