#include <bits/stdc++.h>
using namespace std;
map<int, int> m;
int i, j;
long long n, k;
long long cnt;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> k;
  long long temp;
  temp = n;
  for (i = 0; i <= 63; i++) {
    if (temp % 2 == 1) {
      m[i] = 1;
      cnt++;
    }
    temp /= 2;
  }
  if (cnt > k) {
    cout << "NO";
    return 0;
  }
  for (i = 63; i >= -63; i--) {
    if (cnt + m[i] <= k) {
      cnt += m[i];
      m[i - 1] += 2 * m[i];
      m[i] = 0;
    } else {
      break;
    }
  }
  multiset<int> ms;
  multiset<int>::iterator it;
  for (i = 63; i >= -63; i--) {
    for (j = 0; j < m[i]; j++) {
      ms.insert(i);
    }
  }
  while (ms.size() < k) {
    it = ms.begin();
    int val;
    val = *it;
    ms.erase(it);
    ms.insert(val - 1);
    ms.insert(val - 1);
  }
  cout << "YES" << '\n';
  it = ms.end();
  while (1) {
    it--;
    cout << *it << " ";
    if (it == ms.begin()) break;
  }
  return 0;
}
