#include <bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n;
cin >> n;
vector<int> pot = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576};
vector<int> a(n+1);
a[0] = 0;
a[1] = a[2] = 1;
int ii = 0;
vector<int> s(n+1);
s[0] = 0;
int ans = 0;
bool flag = 0;
while(pot[ii] <= n)
{
for(int i = pot[ii]; i < min(2* pot[ii], n+1); i++)
{
a[i] = a[i - pot[ii]] + 1;
s[i] = a[i] + s[i-1];
if(s[i] >= n)
{
ans = i;
flag = 1;
break;
}
}
if(flag)
break;
ii++;
}
// for(auto x : a)
// {
// cout << x << ' ';
// }
// cout << '\n';
int suma = s[ans];
vector<int> wyn;
for(int i = ans; i > 0; i--)
{
if(suma - n >= a[i])
{
suma -= a[i];
}
else
{
wyn.push_back(i);
}
}
cout << wyn.size()<<'\n';
for(auto x : wyn)
cout << x << ' ';
cout << '\n';
// cout << suma << '\n';
}