1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>

using namespace std;

int main(){
    int n=(cin>>n,n), sum=0, i=1, last[33];

    for(int i=0;i<33;i++) last[i]=0;

    while(sum<n){
        int r = __builtin_popcount(i);
        sum+=r;
        last[r]=i++;
        // cout<<"["<<sum<<"]";
    }

    // cout<<"{"<<sum-n<<endl;
    cout << (n==sum ? i-1 : i-2) <<'\n';
    for(int j=i-1;j>0;j--) if(j!=last[sum-n]) cout<<j<<" ";
    cout<<endl;

}