#include <bits/stdc++.h>
using namespace std;
int main() {
  long long n;
  int k;
  scanf("%lld%d", &n, &k);
  int log = 0;
  deque<pair<int, int> > d;
  while (n) {
    if (n & 1) d.push_back({log, 1});
    ++log;
    n >>= 1;
  }
  long long last, cnt;
  k -= d.size();
  if (k < 0) {
    printf("No");
    return 0;
  }
  while (true) {
    last = d.back().first;
    cnt = d.back().second;
    if (k < cnt) break;
    d.pop_back();
    if (!d.empty() && d.back().first == last - 1)
      d.back().second += 2 * cnt;
    else
      d.push_back({last - 1, 2 * cnt});
    k -= cnt;
  }
  while (k) {
    last = d.front().first;
    --d.front().second;
    d.push_front({last - 1, 2});
    --k;
  }
  printf("Yes\n");
  while (!d.empty()) {
    last = d.back().first;
    cnt = d.back().second;
    d.pop_back();
    for (int i = 0; i < cnt; ++i) printf("%d ", last);
  }
}
