//Agata Majewska 14.12.2022
//Muzyka pop 2 [C]
#include <iostream>
//#include <string.h>
//#include <cstdlib>
//#include <string>
using namespace std;

int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
    int n;
    cin>>n;
    int bin[21];
    //int bin2[21];
    int tab[n];
    int i=0,ii,j,pom;
    int razem=0;
    while(razem<n){
        tab[i]=0;
        j=0;
        //dl=0;
        //nie rozpoznaje funkcji itoa, wiec napisze sama cos w podobie
        pom = i+1;
        ii=0;
        while(pom){ //dopoki liczba bedzie rozna od zera
            //ze strony: https://www.algorytm.edu.pl/funkcje/69-zamiana-liczby-dziesietnej-na-binarna.html
            bin[ii++]=pom%2;
            pom/=2;
        }
        ii--;
        //itoa(i+1,bin,2);
        while(j<=ii){
            if(bin[j]==1){
                tab[i]++;
            }
            j++;
        }
        razem+=tab[i];
        //cout<<i+1<<": "<<bin<<" "<<tab[i]<<"\n";
        //cout<<"razem = "<<razem<<"\n";
        i++;
    }
    if(razem==n){
        //odpowiedz
        cout<<i<<"\n";
        for(i;i>1;i--){
            cout<<i<<" ";
        }
        cout<<i;
    }
    else{
        //1cout<<"razem = "<<razem<<" tab[i-1] = "<<tab[i-1];
        razem = razem-tab[i-1];
        int z=-1;
        i--;
        int je = n - razem;
        //itoa(i,bin,2);
        pom = i;
        ii=0;
        while(pom){ //dopóki liczba będzie różna od zera
            //ze strony: https://www.algorytm.edu.pl/funkcje/69-zamiana-liczby-dziesietnej-na-binarna.html
            bin[ii++]=pom%2;
            pom/=2;
        }
        ii--;
        j=0;
        //j = strlen(bin)-1;
        //cout<<" je = "<<je<<"\n";
        while((je>0)&&(j<ii)){
            if(bin[j]==0){
                je--;
                bin[j]=1;
            }
            j++;
        }
        if(j>=ii){
            for(int iii=i-1;iii>=0;iii--){
                if(tab[iii]==je){
                    z = iii+1;
                    break;
                }
            }
        }
        cout<<i<<"\n";
        //cout<<strtol(bin,NULL,2);
        int a=0;
        int dw=1;
        for(int iii=0;iii<=ii;iii++){
                //cout<<bin[iii]<<" dw = "<<dw<<" ";
            if(bin[iii]==1){
                a=a+dw;
            }
            dw*=2;
            //cout<<"a = "<<a<<"\n";
        }
        //cout<<"\n";
        cout<<a;
        i--;
        if(z==-1){
            for(i;i>0;i--){
                cout<<" "<<i;
            }
        }
        else{
            for(i++;i>0;i--){
                if(i!=z){
                    cout<<" "<<i;
                }

            }
        }
    }



return 0;
}
