#include<iostream>
//#include<fstream>
#include<vector>
#include<queue>
#include<algorithm>
#include<unordered_map>

using namespace std;
typedef int var;

#define fin cin
#define fout cout

//ifstream fin("p2.in");
//ofstream fout("p2.out");

vector<var> SOL;
var a;

int main() {
    fin>>a;
    var i;
    var sum = 1;
    SOL.push_back(1);
    for(i=1; sum<=a; i++) {
        sum += SOL.back();
        SOL.push_back(sum);

    }
    fout<<SOL.size()<<'\n';
    for(auto sol : SOL) {
        fout<<sol<<" ";
    }
    return 0;
}