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
47
48
//Author:Karolina
#include<iostream>
#include<vector>
using namespace std;

int bits(int x)
{
	int c = 0;
	while(x != 0)
	{
		x = x&(x-1);
		c++;
	}
	return c;
}

int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
vector<int> mini(30,0), all;
int i = 1, n, count = 0;
cin >> n;
while(n > 0)
{
	int temp = bits(i);
	if(temp <= n)
	{
		mini[temp] = all.size();
		all.push_back(i);
	}
	else
	{
		count = -1;
		all.push_back(i);
		all[mini[temp-n]]=-1;
	}
	n-= temp;
	i++;
}

cout << all.size() + count << "\n";
	for(int i = all.size() - 1; i >= 0; i--)
	{	
		if(all[i] != -1)
			cout << all[i] << " ";
	}
}