#include <bits/stdc++.h>
using namespace std;
constexpr int MAXK = 1e5 + 15;
vector<int> ans(MAXK);
inline int can(long long k, long long n, long long mid) {
  long long lb = mid * k + 1LL * k * (k - 1) / 2;
  long long ub = (k > 32 ? (long long)1e10 : mid * ((1LL << k) - 1));
  if (lb <= n && n <= ub)
    return 0;
  else if (lb > n)
    return -1;
  else if (ub < n)
    return 1;
  assert(false);
}
void rec(int l, int r, int n) {
  int k = r - l + 1;
  if (l == r) {
    ans[r] = n;
    return;
  }
  long long a = 1;
  long long b = n;
  while (b - a > 1) {
    long long mid = (a + b) / 2;
    int ck = can(k, n, mid);
    if (ck == 0) {
      a = mid;
      break;
    } else if (ck == -1) {
      b = mid;
    } else {
      a = mid;
    }
  }
  if (can(k, n, a) == 0) ans[l] = a;
  rec(l + 1, r, n - (can(k, n, a) == 0) * (a * k + 1LL * k * (k - 1) / 2));
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.precision(0);
  int n, k;
  cin >> n >> k;
  rec(0, k - 1, n);
  long long add = 0;
  int cnt = 0;
  long long tot = 0;
  if (ans[0] == 0) {
    std::cout << "NO";
    return 0;
  };
  cout << "YES\n";
  for (int i = 0; i < k; ++i) {
    add += cnt;
    add += ans[i];
    cnt += ans[i] != 0;
    tot += add;
    cout << add << " ";
  }
  return 0;
}
