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
#include <iostream>
#include <vector>
using namespace std;
const int SIZE = 125000 + 1;
int T[SIZE];
vector <int> V;
void funkcja(int a)
{
    if (a >= SIZE || T[a]) return;
    T[a] = T[a / 2] + (a % 2);
    funkcja(a * 2); funkcja(a * 2 + 1);
}
int main()
{
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int n, w = 0, i = 0;
    cin>>n;
    funkcja(1);
    while (w < n)
    {
        i ++;
        w += T[i];
    }
    w -= n;
    for (int j = i; j > 0; j --)
    {
        if (T[j] <= w) w -= T[j];
        else V.push_back(j);
    }
    cout<<V.size()<<'\n';
    for (auto i : V) cout<<i<<' '; cout<<'\n';
}