#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const long long inf = (1ll << 61);
const int MX = 3e5 + 9;
long long n, k;
unordered_map<int, int> bit;
multiset<int> ms;
int main() {
  cin >> n >> k;
  int x = 0;
  for (long long i = 62; i >= 0; i--) {
    bit[i] = (bool)(n & (1ll << i));
    x += bit[i];
  }
  if (x > k) {
    puts("No");
    return 0;
  }
  puts("Yes");
  for (int i = 62; i >= -62; i--) {
    if (x + bit[i] > k) break;
    x += bit[i];
    bit[i - 1] += bit[i] * 2;
    bit[i] = 0;
  }
  for (int i = 62; i >= -62; i--) {
    while (bit[i]) {
      ms.insert(i);
      bit[i]--;
    }
  }
  while (ms.size() < k) {
    x = *ms.begin();
    ms.erase(ms.begin());
    ms.insert(x - 1);
    ms.insert(x - 1);
  }
  vector<int> ans;
  for (auto pp : ms) ans.push_back(pp);
  reverse(ans.begin(), ans.end());
  for (auto pp : ans) cout << pp << " ";
}
