#include <bits/stdc++.h>
using namespace std;
long long n, l, k, ultim;
map<int, int> cnt;
int main() {
  cin >> n >> k;
  for (int i = 0; i <= 63; i++)
    if ((n >> i) & 1) cnt[i]++, l++;
  if (l > k) {
    cout << "No";
    return 0;
  }
  for (int i = 63; i >= -63; i--) {
    if (l + cnt[i] <= k)
      l += cnt[i], cnt[i - 1] += cnt[i] * 2, cnt[i] = 0;
    else
      break;
  }
  multiset<int> ms;
  multiset<int>::iterator it;
  for (int i = 63; i >= -63; i--)
    for (int j = 0; j < cnt[i]; j++) ms.insert(i);
  while (ms.size() < k) {
    it = ms.begin();
    int u = *it;
    ms.erase(it);
    ms.insert(u - 1);
    ms.insert(u - 1);
  }
  cout << "Yes\n";
  for (auto it = ms.rbegin(); it != ms.rend(); it++) {
    cout << *it << " ";
  }
  return 0;
}
