import std.algorithm;
import std.array;
import std.ascii;
import std.container;
import std.conv;
import std.math;
import std.numeric;
import std.range;
import std.stdio;
import std.string;
import std.typecons;
void log(A...)(A arg) { stderr.writeln(arg); }
int size(T)(in T s) { return cast(int)s.length; }

void main() {
    auto N = readln.chomp.to!long + 1;
    int C = 2;
    int[] ans;
    while (N > 0) {
        long x = N % 2;
        if (x == 1) {
            ans ~= C;
        }
        C++;
        N /= 2;
    }
    ans[$ - 1]--;
    int[] r;
    int x = 1;
    foreach (a; ans) {
        foreach (i; 0 .. a) {
            r ~= x;
        }
        x++;
    }
    writeln(r.length);
    writefln("%(%s %)", r);
}
