#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
long long qpow(long long n, long long k) {
  long long ans = 1;
  while (k) {
    if (k & 1) ans = ans * n;
    k >>= 1;
    n = n * n;
  }
  return ans;
}
long long ans[100050];
int s[100050];
vector<int> q;
int judge() {
  for (int i = 0; i < q.size() - 1; i++) {
    if (q[i] == q[i + 1]) return 1;
  }
  return 0;
}
int main() {
  long long n;
  int k;
  cin >> n >> k;
  bool flag = 1;
  long long tmp = n;
  int cnt = 0;
  while (tmp) {
    int p = tmp % 2;
    tmp /= 2;
    s[cnt++] = p;
  }
  int cntt = 0;
  for (int i = 0; i < cnt; i++) {
    if (s[i] == 1) cntt++;
  }
  int mini;
  if (cntt > k) {
    flag = 0;
    cout << "No";
    exit(0);
  } else {
    for (int i = 0; i < cnt; i++) {
      ans[i] = s[cnt - i - 1];
      if (ans[i]) mini = i;
    }
    for (int i = 0;; i++) {
      if (cntt == k) break;
      if (k - cntt >= ans[i]) {
        cntt += ans[i];
        ans[i + 1] += ans[i] * 2;
        ans[i] = 0;
      } else
        break;
      if (i + 1 > mini) mini = i + 1;
    }
    while (cntt != k) {
      cntt++;
      ans[mini]--;
      ans[mini + 1] += 2;
      mini++;
    }
  }
  if (flag) {
    cout << "Yes" << endl;
    for (int i = 0; i <= mini; i++) {
      while (ans[i]) {
        ans[i]--;
        cout << cnt - 1 - i << " ";
      }
    }
  } else
    cout << "No";
  return 0;
}
