#include <bits/stdc++.h>
using namespace std;
long long s(long long k) {
  long long sum = 1;
  return 1 * (1 - pow(2, k)) / (1 - 2);
}
long long sum(long long start, long long k) {
  return (2 * start + k - 1) * k / 2;
}
int main() {
  srand(time(0));
  long long n, k, sk, an, e;
  cin >> n >> k;
  if (k == 1) {
    cout << "YES" << endl;
    cout << n;
    return 0;
  }
  if (k == 2) {
    if (n >= 6) {
      if (n % 2 == 0) {
        cout << "YES" << endl;
        cout << n / 2 - 1 << " " << n / 2 + 1;
      } else {
        cout << "YES" << endl;
        cout << n / 2 << " " << n / 2 + 1;
      }
    } else if (n >= 3 && n % 2 == 1) {
      cout << "YES" << endl;
      cout << n / 2 << " " << n / 2 + 1;
    } else {
      cout << "NO";
    }
    return 0;
  }
  for (int i = 1; i < n / k; ++i) {
    sk = (2 * i + k - 2) * (k - 1) / 2;
    an = i + k - 2;
    if (n - sk > an && n - sk <= 2 * an) {
      e = n - sk;
      cout << "YES" << endl;
      long long start = i;
      for (int j = 0; j < k - 1; ++j) {
        cout << start << " ";
        start++;
      }
      cout << e << endl;
      return 0;
    }
  }
  for (int i = 2; i < k; ++i) {
    long long tmp = n - s(i) - sum((2 * i) - 1, k - i - 1),
              an = 2 * i - 1 + k - i - 2;
    if (tmp > an && tmp <= 2 * an) {
      cout << "YES" << endl;
      for (int j = 0; j < i; ++j) {
        cout << (j == 0 ? 1 : j * 2) << " ";
      }
      for (int j = i + 2; j <= k; ++j) {
        cout << j << " ";
      }
      cout << tmp << endl;
      return 0;
    }
  }
  cout << "NO";
  return 0;
}
