#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 5;
long long n;
int k;
multiset<int> st;
map<int, int> mp;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> k;
  for (int i = 0; i <= 60; i++)
    if ((1ll << i) & n) st.insert(i), mp[i]++;
  while (st.size() < k) {
    int cur = *st.rbegin();
    if (st.size() + mp[cur] <= k) {
      st.erase(st.find(cur));
      st.insert(cur - 1);
      st.insert(cur - 1);
      mp[cur]--, mp[cur - 1] += 2;
    } else {
      cur = *st.begin();
      st.erase(st.begin());
      st.insert(cur - 1);
      st.insert(cur - 1);
      mp[cur]--, mp[cur - 1] += 2;
    }
  }
  if (st.size() == k) {
    cout << "Yes\n";
    while (!st.empty()) {
      auto it = st.end();
      it--;
      cout << *it << " ";
      st.erase(it);
    }
    return 0;
  }
  cout << "No";
  return 0;
}
