#include <bits/stdc++.h>
using namespace std;
int32_t main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  long long n, k;
  cin >> n >> k;
  long long lo = 1, hi = n;
  while (lo <= hi) {
    long long start = lo + hi >> 1;
    long long s = 0, m = 0, cur = start;
    vector<long long> nums;
    while (s + cur <= n) {
      nums.push_back(cur);
      s += cur++;
      ++m;
    }
    if (m < k) {
      hi = start - 1;
    } else if (m > k) {
      lo = start + 1;
    } else {
      long long diff = n - s;
      long long prev = 0, change = 0;
      for (long long i = 0; i < m; i++) {
        nums[i] += change;
        long long give = m - i;
        long long cur;
        if (i == 0)
          cur = diff / give;
        else
          cur = min(diff / give, 2 * prev - nums[i]);
        diff -= cur * give;
        nums[i] += cur;
        change += cur;
        prev = nums[i];
      }
      if (diff == 0) {
        lo = start + 1;
      } else {
        hi = start - 1;
      }
    }
  }
  --lo;
  if (lo <= 0) {
    cout << "NO\n";
    return 0;
  }
  long long s = 0, m = 0, cur = lo;
  vector<long long> nums;
  while (s + cur <= n) {
    nums.push_back(cur);
    s += cur++;
    ++m;
  }
  if (m == k) {
    long long diff = n - s;
    long long prev = 0, change = 0;
    for (long long i = 0; i < m; i++) {
      nums[i] += change;
      long long give = m - i;
      long long cur;
      if (i == 0)
        cur = diff / give;
      else
        cur = min(diff / give, 2 * prev - nums[i]);
      diff -= cur * give;
      nums[i] += cur;
      change += cur;
      prev = nums[i];
    }
    if (diff == 0) {
      cout << "YES\n";
      for (long long p : nums) {
        cout << p << ' ';
      }
      cout << '\n';
    } else {
      cout << "NO\n";
    }
  } else {
    cout << "NO\n";
  }
  return 0;
}
