#include <bits/stdc++.h>
using namespace std;
const int mx = 64;
int s[mx * 2];
long long n, k;
int main() {
  memset(s, 0, sizeof(s));
  scanf("%lld%lld", &n, &k);
  for (int i = 0; i < mx; i++) {
    s[mx + i] = (n >> i) & 1;
    k -= s[mx + i];
  }
  if (k < 0)
    printf("No\n");
  else {
    printf("Yes\n");
    for (int i = 2 * mx - 1; i >= 0; i--) {
      if (s[i] > k) break;
      k -= s[i];
      s[i - 1] += s[i] << 1;
      s[i] = 0;
    }
    int m = 0;
    while (!s[m]) m++;
    s[m]--;
    for (int i = 2 * mx - 1; i >= m; i--) {
      while (s[i]) {
        printf("%d ", i - mx);
        s[i]--;
      }
    }
    for (int i = m - 1; i >= m - k; i--) printf("%d ", i - mx);
    printf("%d\n", m - k - mx);
  }
  return 0;
}
