#include <bits/stdc++.h>
using namespace std;
bool check(long long int x, long long int k, long long int n) {
  long long int a1 = x, an = x + k - 1;
  long long int sum = (k * (a1 + an)) / 2;
  if (sum >= n)
    return true;
  else
    return false;
}
int main() {
  long long int n, k;
  cin >> n >> k;
  long long int l = 1, r = n;
  while (l < r) {
    long long int mid = (l + r) / 2;
    if (check(mid, k, n))
      r = mid;
    else
      l = mid + 1;
  }
  long long int sum = (k * (l + k + l - 1)) / 2, i;
  if (sum == n) {
    cout << "YES" << endl;
    for (i = 0; i < k; i++) cout << l++ << " ";
    return 0;
  }
  l--;
  if (l == 0) {
    cout << "NO" << endl;
    return 0;
  }
  sum = (k * (l + k + l - 1)) / 2;
  long long int a[k + 1];
  for (i = 0; i < k; i++) {
    a[i] = l++;
  }
  bool ok = false;
  long long int fali = n - (sum);
  for (i = k - 1; i >= 0; i--) {
    long long int raz, moze;
    if (i == k - 1) {
      moze = a[i - 1] * 2;
      raz = moze - a[i];
    } else if (i == 0) {
      moze = a[i + 1] - 1;
      raz = moze - a[i];
    } else {
      moze = min(a[i - 1] * 2, a[i + 1] - 1);
      raz = moze - a[i];
    }
    if (raz >= fali) {
      ok = true;
      a[i] += fali;
      break;
    } else {
      a[i] += raz;
      fali -= raz;
    }
  }
  if (!ok) {
    cout << "NO" << endl;
    return 0;
  }
  cout << "YES" << endl;
  for (i = 0; i < k; i++) cout << a[i] << " ";
  return 0;
}
