#include <bits/stdc++.h>
using namespace std;
int ans[100005];
map<int, int> num;
int main() {
  long long n, k, cnt = 0;
  cin >> n >> k;
  for (int j = 0; n; n >>= 1, j++)
    if (n & 1) num[j] = 1, cnt++;
  if (cnt > k) return cout << "No" << endl, 0;
  for (int i = 63; i >= -63; i--) {
    if (k - cnt >= num[i]) {
      num[i - 1] += num[i] * 2;
      cnt += num[i];
      num[i] = 0;
    } else
      break;
  }
  priority_queue<int, vector<int>, greater<int> > q;
  for (int i = 63; i >= -63; i--)
    for (int j = 0; j < num[i]; j++) q.push(i);
  while (q.size() < k) {
    int x = q.top() - 1;
    q.pop();
    q.push(x);
    q.push(x);
  }
  int t = 0;
  while (!q.empty()) {
    ans[++t] = q.top();
    q.pop();
  }
  cout << "Yes" << endl;
  for (int i = t; i; i--) cout << ans[i] << " ";
  return 0;
}
