#include <bits/stdc++.h>
using namespace std;
long long ans = -1;
vector<long long> jj;
vector<pair<long long, long long> > a;
long long n, k;
const long long INF = 1e8;
void go(long long i, long long now) {
  if (i == a.size()) {
    if (ans > now) return;
    long long llow = (k * (k + 1) / 2) * now;
    if (llow > n) return;
    long long ro = min((k * (k + 1) / 2), INF);
    long long no = min((now), INF);
    if (ro * no > n) return;
    ans = now;
    jj.clear();
    long long ff = 0;
    for (long long i = 0; i < k - 1; i++) {
      jj.push_back((i + 1) * now);
      ff += (i + 1) * now;
    }
    jj.push_back(n - ff);
    return;
  }
  long long nnow = now;
  go(i + 1, nnow);
  long long ff = a[i].second;
  while (ff--) {
    nnow *= a[i].first;
    go(i + 1, nnow);
  }
}
signed main() {
  cin >> n >> k;
  k = min(k, 1000000 * 1ll);
  if ((k * (k + 1)) > n + n) {
    cout << -1;
    return 0;
  }
  long long nn = n;
  map<long long, long long> mp;
  for (long long i = 2; i * i <= n; i++) {
    while (n % i == 0) {
      mp[i]++;
      n /= i;
    }
  }
  if (n != 1) mp[n]++;
  n = nn;
  for (auto x : mp) {
    a.push_back(x);
  }
  go(0, 1);
  if (ans == -1)
    cout << ans;
  else
    for (auto x : jj) cout << x << ' ';
}
