#include <bits/stdc++.h>
using namespace std;
inline int read() {
  int x = 0, f = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = x * 10 + ch - '0';
    ch = getchar();
  }
  return x * f;
}
const int MAXN = 300005;
long long x, y, z, w, a[MAXN];
int n, m, q;
int main() {
  cin >> x >> y;
  memset(a, 0, sizeof(a));
  z = 0;
  for (long long i = 0; i < 64; ++i)
    if ((x >> i) & 1) a[i + 200000] = 1, z++;
  if (z > y)
    printf("No\n");
  else {
    for (int i = (200063); i >= (1); --i)
      if (a[i]) {
        w = min(a[i], y - z);
        if (w == y - z && w < a[i]) {
          w = i;
          break;
        }
        a[i - 1] += w * 2;
        a[i] -= w;
        z += w;
        if (z == y) break;
      }
    for (int i = (1); i <= (w); ++i)
      if (a[i]) {
        w = i;
        break;
      }
    while (z++ < y) {
      a[w]--;
      a[--w] += 2;
    }
    printf("Yes\n");
    for (int i = (200063); i >= (0); --i)
      for (int j = (1); j <= (a[i]); ++j) printf("%d ", i - 200000);
    printf("\n");
  }
  return 0;
}
