#include <bits/stdc++.h>
using namespace std;
long long n;
int k, num, kk;
map<int, int> tim;
int len = 0;
priority_queue<int> q;
priority_queue<int, vector<int>, greater<int> > p;
int ans[100010];
bool cmp(int a, int b) { return a > b; }
int main() {
  scanf("%lld%d", &n, &k);
  kk = k;
  while (n) {
    if (n & 1) q.push(num), p.push(num), tim[num]++;
    n >>= 1;
    num++;
  }
  if (q.size() > k) {
    printf("No");
    return 0;
  }
  k = k - q.size();
  while (1) {
    int v = q.top();
    if (tim[v] > k) break;
    q.pop();
    tim[v]--, k--;
    tim[v - 1] += 2;
    q.push(v - 1);
    q.push(v - 1);
    p.push(v - 1);
    p.push(v - 1);
  }
  for (int i = 1; i <= k; i++) {
    int v = p.top();
    p.pop();
    p.push(v - 1);
    p.push(v - 1);
  }
  printf("Yes\n");
  for (int i = 1; i <= kk; i++) ans[i] = p.top(), p.pop();
  sort(ans + 1, ans + 1 + kk, cmp);
  for (int i = 1; i <= kk; i++) printf("%d ", ans[i]);
  return 0;
}
