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
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <bitset>
#include <cstdio>

int main()
{
//    std::ios_base::sync_with_stdio(false);
    int n;
    std::cin>>n;
    int sum =0;
    int i =0;
    while(sum<n)
    {
    int bits = std::bitset<20>(i).count();
    sum+=bits;
    ++i;
    }
    --i;
    std::vector<int> m;
    m.reserve(i);
    while(sum > n)
    {
       m.push_back(i);
       --i;
       int bits = std::bitset<20>(i).count();
       if (bits<= sum -n) { sum-=n; --i;}
    }
    while (i>0)
    {
       m.push_back(i);
       --i;
    }
    std::cout<<m.size()<<std::endl;
    for(const auto& x:m) std::cout<<x<<" ";
    std::cout<<std::endl;
    return 0;
}