#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
long long powm(long long base, long long exp, long long mod = 1000000007) {
  base %= mod;
  long long ans = 1;
  while (exp) {
    if (exp & 1LL) ans = (ans * base) % mod;
    exp >>= 1LL, base = (base * base) % mod;
  }
  return ans;
}
map<int, int> b;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n, k;
  cin >> n >> k;
  int cnt = 0;
  priority_queue<int> p;
  for (int i = 0; i < 61; i++) {
    if (n & (1LL << i)) {
      p.push(i);
      b[i]++;
      cnt++;
    }
  }
  if (cnt > k) {
    cout << "NO" << '\n';
    return 0;
  }
  cout << "YES" << '\n';
  while (cnt < k) {
    int x = p.top();
    if (b[x] + cnt > k) break;
    p.pop();
    b[x]--;
    p.push(x - 1);
    p.push(x - 1);
    b[x - 1] += 2;
    cnt++;
  }
  while (!p.empty()) {
    int q = p.top();
    p.pop();
    if (p.empty()) {
      while (cnt < k) {
        cout << --q << " ";
        cnt++;
      }
    }
    cout << q << " ";
  }
  cout << '\n';
}
