#include <bits/stdc++.h>
using namespace std;
long long popCount(long long x) {
  long long s = 0;
  while (x > 0) {
    if (x & 1) s++;
    x = x >> 1;
  }
  return s;
}
vector<pair<long long, long long> > init(long long n) {
  vector<pair<long long, long long> > a;
  long long idx = 0;
  while (n > 0) {
    if (n & 1) {
      a.push_back({idx, 1});
    }
    n = n >> 1;
    idx++;
  }
  reverse(a.begin(), a.end());
  return a;
}
long long reduce_from_max(vector<pair<long long, long long> >& a, int total,
                          int k) {
  long long s = 0;
  while (total + a[s].second <= k) {
    total += a[s].second;
    a[s].first -= 1;
    a[s].second *= 2;
    if (s + 1 < a.size() && a[s].first == a[s + 1].first) {
      a[s + 1].second += a[s].second;
      a[s].second = 0;
      s++;
    }
  }
  return total;
}
int main(void) {
  long long n, k;
  cin >> n >> k;
  if (popCount(n) > k) {
    cout << "No" << endl;
    return 0;
  }
  vector<pair<long long, long long> > a = init(n);
  long long total = reduce_from_max(a, a.size(), k);
  cout << "Yes" << endl;
  if (total != k) {
    a[a.size() - 1].second--;
  }
  for (auto it = a.begin(); it != a.end(); it++) {
    if (it->second) {
      for (int i = 0; i < it->second; i++) {
        cout << it->first << " ";
      }
    }
  }
  if (total != k) {
    long long cnt = 1;
    for (; cnt != k - total; cnt++) {
      cout << a[a.size() - 1].first - cnt << " ";
    }
    cout << a[a.size() - 1].first - cnt << " ";
    cout << a[a.size() - 1].first - cnt << " ";
  }
  cout << endl;
  return 0;
}
