#include <bits/stdc++.h>
using namespace std;
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
template <class T>
inline bool fs(T &x) {
  int c = getchar();
  int sgn = 1;
  while (~c && c < '0' || c > '9') {
    if (c == '-') sgn = -1;
    c = getchar();
  }
  for (x = 0; ~c && '0' <= c && c <= '9'; c = getchar()) x = x * 10 + c - '0';
  x *= sgn;
  return ~c;
}
long long int sat(long long int n, long long int pos) {
  return n = n | (1LL << pos);
}
long long int reset(long long int N, long long int pos) {
  return N = N & ~(1LL << pos);
}
bool cak(long long int n, long long int pos) {
  return (bool)(n & (1LL << pos));
}
long long int binPow(long long int a, long long int q, long long int mud) {
  a %= mud;
  if (q == 0) return 1;
  return ((q % 2 == 1 ? a : 1) * binPow(a * a, q / 2, mud)) % mud;
}
pair<long long int, long long int> ex_clid(long long int a, long long int b) {
  if (b == 0) return pair<long long int, long long int>(1, 0);
  pair<long long int, long long int> d = ex_clid(b, a % b);
  return pair<long long int, long long int>(d.second,
                                            d.first - d.second * (a / b));
}
long long int mod_inv(long long int n, long long int md) {
  pair<long long int, long long int> d = ex_clid(n, md);
  return ((d.first % md) + md) % md;
}
template <class T>
double dif(T &a, T &b) {
  double ans = (a.first - b.first) * (a.first - b.first) +
               (a.second - b.second) * (a.second - b.second);
  return sqrt(ans);
}
long long int n, k, x;
vector<long long int> ara;
int main() {
  fs(n);
  fs(k);
  if (k == 1) {
    cout << n << endl;
    return 0;
  }
  for (long long int i = 1; i * i <= n; i++)
    if (n % i == 0) {
      ara.push_back(i);
      if (n / i != i) ara.push_back(n / i);
    }
  sort((ara).begin(), (ara).end());
  int ln = ara.size();
  vector<long long int> ans;
  long long int tmp;
  long long int mx = 1;
  for (int i = ln - 2; i >= 0; i--) {
    tmp = n;
    x = ara[i];
    ans.clear();
    for (long long int j = 1; j < k && tmp - (x * j) >= 0; j++) {
      tmp -= (x * j);
      ans.push_back(x * j);
    }
    int len = ans.size();
    if (ans[len - 1] < tmp) ans.push_back(tmp);
    if (ans.size() == k && (tmp % x == 0)) {
      for (int j = 0; j <= len; j++) cout << ans[j] << ' ';
      cout << endl;
      return 0;
    }
  }
  cout << -1 << endl;
  return 0;
}

### Prompt

In CPP, your task is to solve the following problem:

You are given positive integer number n. You should create such strictly increasing sequence of k positive numbers a1, a2, ..., ak, that their sum is equal to n and greatest common divisor is maximal.

Greatest common divisor of sequence is maximum of such numbers that every element of sequence is divisible by them.

If there is no possible sequence then output -1.

Input

The first line consists of two numbers n and k (1 ≤ n, k ≤ 1010).

Output

If the answer exists then output k numbers — resulting sequence. Otherwise output -1. If there are multiple answers, print any of them.

Examples

Input

6 3


Output

1 2 3


Input

8 2


Output

2 6


Input

5 3


Output

-1

### Response

```cpp
#include <bits/stdc++.h>
using namespace std;
int dx[] = {1, 0, -1, 0};
int dy[] = {0, 1, 0, -1};
template <class T>
inline bool fs(T &x) {
  int c = getchar();
  int sgn = 1;
  while (~c && c < '0' || c > '9') {
    if (c == '-') sgn = -1;
    c = getchar();
  }
  for (x = 0; ~c && '0' <= c && c <= '9'; c = getchar()) x = x * 10 + c - '0';
  x *= sgn;
  return ~c;
}
long long int sat(long long int n, long long int pos) {
  return n = n | (1LL << pos);
}
long long int reset(long long int N, long long int pos) {
  return N = N & ~(1LL << pos);
}
bool cak(long long int n, long long int pos) {
  return (bool)(n & (1LL << pos));
}
long long int binPow(long long int a, long long int q, long long int mud) {
  a %= mud;
  if (q == 0) return 1;
  return ((q % 2 == 1 ? a : 1) * binPow(a * a, q / 2, mud)) % mud;
}
pair<long long int, long long int> ex_clid(long long int a, long long int b) {
  if (b == 0) return pair<long long int, long long int>(1, 0);
  pair<long long int, long long int> d = ex_clid(b, a % b);
  return pair<long long int, long long int>(d.second,
                                            d.first - d.second * (a / b));
}
long long int mod_inv(long long int n, long long int md) {
  pair<long long int, long long int> d = ex_clid(n, md);
  return ((d.first % md) + md) % md;
}
template <class T>
double dif(T &a, T &b) {
  double ans = (a.first - b.first) * (a.first - b.first) +
               (a.second - b.second) * (a.second - b.second);
  return sqrt(ans);
}
long long int n, k, x;
vector<long long int> ara;
int main() {
  fs(n);
  fs(k);
  if (k == 1) {
    cout << n << endl;
    return 0;
  }
  for (long long int i = 1; i * i <= n; i++)
    if (n % i == 0) {
      ara.push_back(i);
      if (n / i != i) ara.push_back(n / i);
    }
  sort((ara).begin(), (ara).end());
  int ln = ara.size();
  vector<long long int> ans;
  long long int tmp;
  long long int mx = 1;
  for (int i = ln - 2; i >= 0; i--) {
    tmp = n;
    x = ara[i];
    ans.clear();
    for (long long int j = 1; j < k && tmp - (x * j) >= 0; j++) {
      tmp -= (x * j);
      ans.push_back(x * j);
    }
    int len = ans.size();
    if (ans[len - 1] < tmp) ans.push_back(tmp);
    if (ans.size() == k && (tmp % x == 0)) {
      for (int j = 0; j <= len; j++) cout << ans[j] << ' ';
      cout << endl;
      return 0;
    }
  }
  cout << -1 << endl;
  return 0;
}

```