1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int MAXX=1e6+10;
ll tab[MAXX]; 
int wymazane[MAXX];
int main(){
    int n;
    cin>>n;
    //ll w=0; 
    for(ll i=1;i<=MAXX-10;i++){
        tab[i]+=tab[i-1]+__builtin_popcount(i);
    }
    //cout<<tab[10]<<" "<<tab[7]<<" "<<tab[2]<<" "<<tab[4];
    int p=0;
    int k=MAXX-10;
    while(p+1<k){
        int sr=(p+k)/2;
        if(tab[sr]<n)p=sr;
        else k=sr; 
    }
    //cout<<k<<" "<<tab[k];
    ll w=tab[k];
    int licznik=0;
    for(int i=k-1;i>0;i--){
        if(w-__builtin_popcount(i)>=n){wymazane[i]=1; w-=__builtin_popcount(i);licznik++;}
    }
    cout<<k-licznik<<"\n";
    for(int i=k;i>0;i--){
        if(wymazane[i]==0){
            cout<<i<<" ";
        }
    }
    return 0;
}