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
36
37
38
39
40
41
42
43
44
45
46
#include <bits/stdc++.h>     
using namespace std;
 
#define st first
#define nd second
#define g0 get<0> 
#define g1 get<1> 
#define g2 get<2> 
#define double long double


main()
{
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	
	int n;
	cin>>n;
	vector<int> res;
	int sum=0;
	int num=1;
	while(sum<n)
	{
		res.push_back(num);
		sum+=__builtin_popcount(num);
		num++;
	}
	vector<int> vis(res.size()+1, 0);
	int ile=0;
	for(int i=res.size()-1; i>=0; i--)
	{
		if(sum-__builtin_popcount(res[i])>=n){
			vis[i]=1;
			sum-=__builtin_popcount(res[i]);
			ile++;
		}
	}
	cout<<res.size()-ile<<'\n';
	for(int i=res.size()-1; i>=0; i--)
	{
		if(!vis[i])
			cout<<res[i]<<" ";
		
	}
	
}