#include <bits/stdc++.h>
using namespace std;
map<int, int> mp;
int main() {
  long long n;
  int k, cnt = 0;
  scanf("%lld %d", &n, &k);
  for (int i = 0; i < 63; i++) {
    if (n >> i & 1) {
      mp[i] = 1;
      ++cnt;
    }
  }
  if (cnt > k) return puts("No"), 0;
  puts("Yes");
  int st, pre;
  for (int i = 62; i >= -62; i--) {
    if (mp[i] + cnt <= k) {
      pre = i - 1;
      mp[i - 1] += 2 * mp[i];
      cnt += mp[i];
      mp[i] = 0;
    } else
      break;
  }
  int x;
  for (int i = -62; i < 62; i++) {
    if (mp.count(i)) {
      x = i;
      break;
    }
  }
  vector<int> v;
  int res = k - cnt;
  if (res > 0) {
    --mp[x];
    for (int i = 1; i <= res; i++) v.push_back(x - i);
    v.push_back(x - res);
  }
  for (int i = -62; i < 62; i++)
    for (int j = 0, y = mp[i]; j < y; j++) v.push_back(i);
  sort(v.begin(), v.end(), greater<int>());
  for (int i = 0; i < v.size(); i++)
    printf("%d%c", v[i], " \n"[i == v.size() - 1]);
  return 0;
}
