func_code_string: #include <bits/stdc++.h>   using namespace std;   int block(long int x) {     vector<long int> v;     while (x > 0) {       v.push_back(x % 2);       x = x / 2;     }     int ret = 0;     for (int i = 0; i < v.size(); i++) {       if (v[i] == 1) {         ret++;       }     }     return ret;   }   void pprint(long int x) {     vector<long int> v;     while (x > 0) {       v.push_back(x % 2);       x = x / 2;     }     cout <<  YES n ;     int ret = 0;     for (int i = 0; i < v.size(); i++) {       if (v[i] == 1) {         ret++;         int A = 1 << i;         cout << A <<    ;       }     }     cout << endl;   }   void solve(long int x, long long k, long long mini) {     vector<long int> v;     long long rem = k - mini;     while (x > 0) {       v.push_back(x % 2);       x = x / 2;     }     int ret = 0;     cout <<  YES n ;     int i = v.size() - 1;     while (rem > 0) {       v[i]--;       v[i - 1] += 2;       if (v[i] == 0) {         i--;       }       rem--;     }     for (int i = 0; i < v.size(); i++) {       while (v[i] > 0) {         ret++;         int A = 1 << i;         cout << A <<    ;         v[i]--;       }     }     cout << endl;   }   int main() {     long long x;     long long n, k;     cin >> n >> k;     if (k > n) {       cout <<  NO n ;       return 0;     }     if (k == n) {       cout <<  YES n ;       for (int i = 0; i < n; i++) {         cout << 1 <<    ;       }       return 0;     }     int mini = block(n);     if (k < mini) {       cout <<  NO n ;       return 0;     }     if (k == mini) {       pprint(n);     } else {       solve(n, k, mini);     }     return 0;   }   