#include <bits/stdc++.h>
using namespace std;
const long long int inf = LLONG_MAX;
const long long int mod = 1e9 + 7;
const long long int N = 1e6 + 1;
long long int get_start(long long int n, long long int k) {
  long long int s = max(0ll, (n - k * (k - 1) / 2) / k - 1);
  while (true) {
    s++;
    long long int start = s;
    long long int end = s + k - 1;
    long long int ap_sum = (start + end) * k / 2;
    long long int gp_sum = start * (pow(2, k) - 1);
    if ((pow(2, k) - 1) > (inf / start)) gp_sum = inf;
    if (ap_sum <= n and n <= gp_sum) return s;
    if (ap_sum > n) {
      cout << "NO\n";
      exit(0);
    }
  }
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long int n, k;
  cin >> n >> k;
  long long int s = get_start(n, k);
  vector<long long int> ans(k);
  for (long long int i = 0; i < k; ++i) {
    ans[i] = i + s;
  }
  long long int sm = (s + s + k - 1) * k / 2;
  while (sm != n) {
    long long int z = k - 1;
    ans[z]++;
    while (ans[z] > ans[z - 1] * 2) {
      ans[z]--;
      ans[z - 1]++;
      z--;
      if (z == 0 || ans[z] <= ans[z - 1]) {
        cout << "NO\n";
        exit(0);
      }
    }
    sm++;
  }
  cout << "YES\n";
  for (long long int i = 0; i < k; ++i) {
    cout << ans[i] << " ";
  }
  return 0;
}
