#include <bits/stdc++.h>   using namespace std;   using vint = vector<long long>;   using pint = pair<long long, long long>;   using vpint = vector<pint>;   template <typename A, typename B>   inline void chmin(A& a, B b) {     if (a > b) a = b;   }   template <typename A, typename B>   inline void chmax(A& a, B b) {     if (a < b) a = b;   }   template <class A, class B>   ostream& operator<<(ostream& ost, const pair<A, B>& p) {     ost <<  {  << p.first <<  ,  << p.second <<  } ;     return ost;   }   template <class T>   ostream& operator<<(ostream& ost, const vector<T>& v) {     ost <<  { ;     for (long long i = 0; i < v.size(); i++) {       if (i) ost <<  , ;       ost << v[i];     }     ost <<  } ;     return ost;   }   inline long long topbit(unsigned long long x) {     return x ? 63 - __builtin_clzll(x) : -1;   }   inline long long popcount(unsigned long long x) {     return __builtin_popcountll(x);   }   inline long long parity(unsigned long long x) { return __builtin_parity(x); }   signed main() {     long long N, K;     cin >> N >> K;     if (K > 1000000 || K * (K + 1) / 2 > N) {       cout << -1 << endl;       return 0;     }     long long s = K * (K + 1) / 2;     long long G = 0;     for (long long g = 1; g * g <= N; g++) {       if (N % g) continue;       if (N / s >= g) chmax(G, g);       if (N / s >= N / g) chmax(G, N / g);     }     vint ans(K);     iota((ans).begin(), (ans).end(), 1);     ans[K - 1] += N / G - s;     for (long long i = 0; i < (K); i++) ans[i] *= G;     for (long long i = 0; i < (K); i++) {       if (i) cout <<    ;       cout << ans[i];     }     cout << endl;     return 0;   }   