#include <bits/stdc++.h>
using namespace std;
const string YES = "Yes";
const string NO = "No";
vector<int> bin;
map<long long, long long> a;
long long n, k, razmer = 0;
void toBin() {
  while (n) {
    bin.push_back(n % 2);
    n /= 2;
  }
}
void toA() {
  for (int i = 0; i < bin.size(); i++) {
    if (bin[i]) {
      a[i] = 1;
      razmer++;
    } else {
      a[i] = 0;
    }
  }
}
bool solve() {
  vector<int> ans;
  if (razmer > k) return false;
  while (k != razmer) {
    map<long long, long long>::iterator it = a.end();
    it--;
    while (!it->second) it--;
    int i = it->first;
    if (a[i] + razmer <= k) {
      a[i]--;
      a[i - 1] += 2;
      razmer++;
    } else {
      it = a.begin();
      while (!it->second) it++;
      i = it->first;
      a[i]--;
      a[i - 1] += 2;
      razmer++;
    }
  }
  return true;
}
int main() {
  cin >> n >> k;
  toBin();
  toA();
  if (solve()) {
    cout << YES << endl;
  } else {
    cout << NO << endl;
    return 0;
  }
  for (map<long long, long long>::reverse_iterator it = a.rbegin();
       it != a.rend(); it++) {
    int i = it->first;
    if (a[i]) {
      for (int j = 0; j < it->second; j++) {
        cout << i << ' ';
      }
    }
  }
  cout << endl;
  return 0;
}
