#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int INF = 1000000000;
long long n, k, bitLen = 0, curSum = 0;
map<long long, long long> bit;
string result = "No";
vector<int> res;
multiset<int> cur;
int main() {
  long long tmp;
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n >> k;
  for (int i = 0; i <= 63; i++) {
    if ((n >> i) & 1) {
      curSum++;
      bit[i]++;
    }
  }
  for (int bitLen = 63; (bitLen >= -63) && (curSum < k); bitLen--) {
    if ((curSum + bit[bitLen]) <= k) {
      curSum += bit[bitLen];
      bit[bitLen - 1] += bit[bitLen] * 2;
      bit[bitLen] = 0;
    } else
      break;
  }
  for (int i = -64; i <= 63; i++) {
    for (int j = 0; j < bit[i]; j++) cur.insert(i);
  }
  while (curSum < k) {
    int c = *cur.begin();
    cur.erase(cur.begin());
    cur.insert(c - 1);
    cur.insert(c - 1);
    curSum++;
  }
  if (k == curSum) result = "Yes";
  cout << result << "\n";
  if (result == "Yes") {
    for (auto it = cur.rbegin(); it != cur.rend(); it++) cout << *it << " ";
  }
  return 0;
}
