#include <bits/stdc++.h>
using namespace std;
int32_t main() {
  long long n, k;
  cin >> n >> k;
  vector<long long> v;
  map<long long, long long, greater<long long>> mp;
  long long temp = n;
  while (temp > 0) {
    v.push_back(temp % 2);
    temp = temp / 2;
  }
  long long sz = 0;
  for (long long i = 0; i < v.size(); i++) {
    if (v[i] == 1) {
      mp[i] = 1;
      sz++;
    }
  }
  if (sz > k) {
    cout << "No" << endl;
    return 0;
  }
  long long x = mp.begin()->first;
  while (true) {
    long long t = sz;
    t += mp.begin()->second;
    if (t > k) {
      break;
    }
    sz = t;
    mp[(mp.begin()->first) - 1] += 2 * (mp.begin()->second);
    mp.erase(mp.begin()->first);
  }
  while (sz < k) {
    long long a = mp.rbegin()->first;
    long long b = mp.rbegin()->second;
    mp[a - 1]++;
    mp[a - 1]++;
    mp[a]--;
    sz++;
    if (mp[a] == 0) {
      mp.erase(a);
    }
  }
  cout << "Yes" << endl;
  for (auto i = mp.begin(); i != mp.end(); i++) {
    long long a = i->second;
    while (a--) {
      cout << i->first << " ";
    }
  }
}
