#include <bits/stdc++.h>
using namespace std;
int64_t k, n;
multiset<int64_t> s;
map<int64_t, int64_t> F;
int main() {
  cin >> k >> n;
  int Count = 0;
  for (int64_t i = 0; i <= 63; i++) {
    if (k % 2 == 1) {
      F[i]++;
      Count++;
    }
    k /= 2;
  }
  if (Count > n) {
    cout << "No";
    return 0;
  }
  for (int i = 63; i >= -63; i--)
    if (Count + F[i] <= n) {
      F[i - 1] += 2 * F[i];
      Count += F[i];
      F[i] = 0;
    } else
      break;
  for (int i = -63; i <= 63; i++)
    for (int j = 1; j <= F[i]; j++) s.insert(i);
  while (s.size() < n) {
    int64_t tmp = *s.begin();
    s.erase(s.find(*s.begin()));
    tmp--;
    s.insert(tmp);
    s.insert(tmp);
  }
  cout << "Yes\n";
  while (s.size() > 0) {
    cout << *s.rbegin() << ' ';
    s.erase(s.find(*s.rbegin()));
  }
}
