#include <bits/stdc++.h>
using namespace std;
template <typename Tp>
inline void outarr(Tp _begin, Tp _end, const char* _delim = " ") {
  for (Tp current = _begin; current != _end; ++current) {
    std::cout << *current << _delim;
  }
  std::cout << '\n';
}
using ll = long long;
using pii = std::pair<int, int>;
constexpr int INF = 0x3f3f3f3f;
constexpr int MOD = static_cast<const int>(1e9 + 7);
ll ans[100000];
int main() {
  std::ios_base::sync_with_stdio(false);
  std::cin.tie(nullptr);
  int n, k;
  cin >> n >> k;
  if (k == 1) {
    cout << "YES"
            "\n"
         << n << "\n";
    return 0;
  }
  if (((1LL * k * (k + 1)) >> 1) > n || (n == 4 && k == 2) ||
      (n == 8 && k == 3)) {
    return cout << ("NO") << '\n', 0;
    ;
  }
  ll sum = (k * (k + 1)) >> 1;
  ans[0] = n / sum;
  for (int i = 1; i < k; ++i) {
    ans[i] = ans[i - 1] + ans[0];
  }
  sum *= ans[0];
  while (sum != n) {
    ll pre = sum;
    if (sum + ans[1] - ans[0] - 1 < n) {
      sum += ans[1] - ans[0] - 1;
      ans[0] += ans[1] - ans[0] - 1;
    } else {
      ans[0] += n - sum;
      break;
    }
    for (int i = k - 1; i > 0; --i) {
      if (ans[i - 1] + ans[i - 1] + sum - ans[i] < n) {
        sum -= ans[i];
        ans[i] = ans[i - 1] << 1;
        sum += ans[i];
      } else {
        ans[i] += n - sum;
        sum = n;
        break;
      }
    }
    if (ans[0] == 1 && n - sum >= 2) {
      ++ans[0];
      ++ans[1];
      sum += 2;
    }
    if (pre == sum) {
      return cout << ("NO") << '\n', 0;
      ;
    }
  }
  cout << "YES"
          "\n";
  outarr(ans, ans + k);
  return 0;
}
