#include<algorithm>
#include<iostream>
#include<string>
#include<string.h>
#include<array>
#include<cmath>
#include<iterator>
#include<queue>
#include<set>
#include<map>
#include<utility>
#include<vector>
#include<cfloat>
#include<climits>
#include<complex>
#include<deque>
#include<fstream>
#include<functional>
#include<iomanip>
#include<list>
#include<memory>
#include<stack>
#include<random>
using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    long long S;
    cin >> S;
    vector<long long>ans;
    while(S) {
        long long l = 0,r = 1001001001;
        while(l+1 < r) {
            long long mid = (l+r)/2;
            if(mid*mid <= S) {
                l = mid;
            }
            else {
                r = mid;
            }
        }
        ans.push_back(l*l);
        S -= l*l;
    }
    cout << ans.size() << "\n";
    for(int i = 0; i < ans.size(); i++) {
        cout << ans[i] << ((i+1 == ans.size())?"\n":" ");
    }
}