#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string>
#include <vector>
#include <cmath>
#define N 1000005

using namespace std;

int a[N], b[105], k, ninit;

void recursiv(int n) {
    if(n != 0 && a[n] == 0 && n!= ninit) {
        a[n] = 1;
        b[k++] = n;
    }
    if(n == 0 || n == 1 || n == 2) {
        if(n != 0 && a[n] == 0) {
            a[n] = 1, b[k++] = n;
            if(n == 2)
                a[1] = 1, b[k++] = 1;
        }
        return;
    }
    if(n % 2 == 1) {
        recursiv(n/2);
        recursiv(n/2+1);
    }
    else {
        recursiv(n/2+1);
    }
}
int main()
{
    //freopen("2.in", "r", stdin);
    scanf("%d", &ninit);
    recursiv(ninit);

    for(int i = 0; i < k-1; i++)
        for(int j = i+1; j < k; j++)
            if(b[i] > b[j])
                swap(b[i], b[j]);

    for(int i = 0; i < k; i++)
        printf("%d ", b[i]);
    return 0;
}