#include <bits/stdc++.h>
using namespace std;
long long n, k;
const long long INF = 1e9 + 7;
long long least(long long i, long long x) {
  return x * (k - i + 1) + (k - i) * (k - i + 1) / 2;
}
long long bin[100];
long long Max(long long i, long long x) {
  long long ans = 0;
  int t = min(k - i, 99LL);
  ans = x * bin[t];
  return min(ans, INF);
}
int main() {
  bin[0] = 1;
  for (int i = 1; i < 100; i++) {
    bin[i] = bin[i - 1] * 2;
    bin[i] = min(bin[i], INF);
  }
  for (int i = 1; i < 100; i++) {
    bin[i] += bin[i - 1];
    bin[i] = min(bin[i], INF);
  }
  cin >> n >> k;
  long long L = 1, R = n;
  while (L < R) {
    int M = (L + R) >> 1;
    if (Max(1, M) >= n) {
      R = M;
    } else
      L = M + 1;
  }
  if (least(1, R) > n) {
    puts("NO");
    return 0;
  }
  printf("YES\n");
  long long last = 0;
  for (int i = 1; i <= k; i++) {
    long long L = last + 1, R = n;
    if (last != 0) R = min(n, 2 * last);
    while (L < R) {
      int M = (L + R) >> 1;
      if (Max(i, M) >= n) {
        R = M;
      } else
        L = M + 1;
    }
    printf("%lld ", R);
    last = R;
    n -= R;
  }
  return 0;
}
