#include <bits/stdc++.h>
using namespace std;
long long n, k;
map<long long, long long> st;
map<long long, long long>::iterator it;
int main() {
  ios_base::sync_with_stdio(false);
  long long precision = numeric_limits<long double>::digits10;
  cin >> n >> k;
  long long req = 0;
  for (int i = 59; i >= 0; i--) {
    if ((n & (1ll << i)) != 0) {
      req++;
      st[i] = 1;
    }
  }
  if (k < req) {
    cout << "No\n";
    return 0;
  }
  k -= req;
  while (true) {
    it = st.end();
    it--;
    int temp1 = it->first;
    if (k >= st[temp1]) {
      if (st.count(temp1 - 1) == 0)
        st[temp1 - 1] = 2 * st[temp1];
      else
        st[temp1 - 1] += 2 * st[temp1];
      k -= st[temp1];
      st.erase(temp1);
    } else
      break;
  }
  while (k != 0) {
    int temp1 = st.begin()->first;
    k--;
    if (st.count(temp1 - 1) == 0)
      st[temp1 - 1] = 2;
    else
      st[temp1 - 1] += 2;
    st[temp1] -= 1;
    if (st[temp1] == 0) st.erase(temp1);
  }
  cout << "Yes\n";
  it = st.end();
  it--;
  while (true) {
    int temp = st[it->first];
    assert(temp != 0);
    while (temp != 0) {
      cout << it->first << " ";
      temp--;
    }
    if (it == st.begin()) break;
    it--;
  }
  cout << "\n";
}
