#include <bits/stdc++.h>
#pragma warning(disable : 4996)
using namespace std;
const int maxn = 64;
long long N, K;
int b[maxn * 2];
int main() {
  scanf("%I64d%I64d", &N, &K);
  for (int i = 0; i < maxn; i++) {
    K -= (b[maxn + i] = N >> i & 1);
  }
  if (K < 0) return puts("No") & 0;
  for (int i = 2 * maxn - 1; i >= 1; i--) {
    if (b[i] > K) break;
    K -= b[i];
    b[i - 1] += b[i] << 1;
    b[i] = 0;
  }
  int k = 0;
  while (!b[k]) k++;
  b[k]--;
  puts("Yes");
  for (int i = 2 * maxn - 1; i >= k; i--) {
    while (b[i]--) printf("%d ", i - maxn);
  }
  for (int i = 1; i <= K; i++) {
    printf("%d ", k - i - maxn);
  }
  printf("%d\n", k - K - maxn);
  return 0;
}
