#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
using namespace std;
const long long Mod = 1000000007LL, INF = 1e9, LINF = 1e18;
const long double Pi = 3.141592653589793116L;
const long double EPS = 0.000000001L, Gold = ((1.0L + sqrt(5.0L)) / 2.0L);
long long keymod[] = {1000000007LL, 1000000009LL, 1000000021LL, 1000000033LL};
mt19937 rng32(chrono::steady_clock::now().time_since_epoch().count());
mt19937_64 rng64(chrono::steady_clock::now().time_since_epoch().count());
int OImode = 0;
int MultiTest = 0;
int Interactive = 0;
char infile[] = "FILE.IN";
char outfile[] = "FILE.OUT";
int n, k;
int binsearch(int L, int R) {
  int res = R + 1;
  while (L <= R) {
    int mid = (L + R) / 2;
    if (1LL * mid * k + 1LL * k * (k - 1) / 2 > n) {
      R = mid - 1;
      continue;
    }
    if (k <= 30 && 1LL * mid * ((1LL << k) - 1) < n) {
      L = mid + 1;
      continue;
    }
    res = mid;
    R = mid - 1;
  }
  return res;
}
void Input() { cin >> n >> k; }
void Solve() {
  int a1 = binsearch(1, n);
  vector<int> a(k, a1);
  long long sum = a1;
  for (int i = 1; i < k; i++) {
    a[i] = a[i - 1] + 1;
    sum += a[i];
  }
  if (sum > n) {
    cout << "NO\n";
    return;
  }
  int i = k - 1;
  while (sum < n && i > 0) {
    long long increasable = min(n - sum, 1LL * (a[i - 1] * 2 - a[i]));
    if (increasable == 0) break;
    for (int x = i; x < k; x++) {
      increasable = min(n - sum, 1LL * (a[x - 1] * 2 - a[x]));
      sum += increasable;
      a[x] += increasable;
    }
    i = i - 1;
  }
  if (sum < n) {
    cout << "NO\n";
    return;
  }
  cout << "YES\n";
  for (auto z : a) cout << z << " ";
  cout << '\n';
}
int main(int argc, char* argv[]) {
  if (OImode) {
    freopen(infile, "r", stdin);
    freopen(outfile, "w", stdout);
  }
  ios_base::sync_with_stdio(false);
  if (!Interactive) cin.tie(NULL);
  int T = 1;
  if (MultiTest) cin >> T;
  while (T--) {
    Input();
    Solve();
  }
  return 0;
}
