#include <bits/stdc++.h>
using namespace std;
long long n;
int k, cnt[101000] = {0}, tot;
void get() {
  int pos = 0;
  while (n) {
    if (n & 1) cnt[pos + 50000]++, tot++;
    pos++, n >>= 1;
  }
}
void solve() {
  if (tot > k) {
    printf("No");
    return;
  }
  printf("Yes\n");
  for (int i = 100000; i >= 0; i--) {
    if (cnt[i]) {
      if (tot + cnt[i] <= k)
        cnt[i - 1] += cnt[i] * 2, tot += cnt[i], cnt[i] = 0;
      else
        break;
    }
  }
  if (tot < k) {
    int pos;
    for (int i = 0; i <= 100000; i++)
      if (cnt[i]) {
        pos = i;
        break;
      }
    while (tot < k) {
      tot++;
      cnt[pos - 1] += 2;
      cnt[pos]--;
      pos--;
    }
  }
  for (int i = 100000; i >= 1; i--) {
    while (cnt[i]) {
      printf("%d ", i - 50000);
      --cnt[i];
    }
  }
}
int main() {
  cin >> n >> k;
  get();
  solve();
}
