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;
using pii=pair<int,int>;
vector<int>v[40];
vector<int>res;
int main()
{
   ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
   int n;cin>>n;
   int s=0,id=1,mx=0;
   for(id=1;s<n;id++)
   {
      int cnt=__builtin_popcount(id);
      mx=max(mx,cnt);
      s+=cnt;
      v[cnt].push_back(id);
   }
   int d=s-n;
   int a=min(mx,d);
   while(d>0)
   {
      a=min(a,d);
      v[a].pop_back();
      d-=a;
      if(v[a].empty())a--;
   }
   for(int i=1;i<=30;i++)
   {
      for(int j=0;j<v[i].size();j++)res.push_back(-v[i][j]);
   }
   sort(res.begin(),res.end());
   cout<<res.size()<<"\n";
   for(auto it:res)cout<<-it<<" ";
   cout<<"\n";
}