#include<vector>
#include<string>
#include<iostream>
#include<algorithm>
#include<set>
using namespace std;
int main(){
int n, temp, minimum=0, posAkhir=-1;
vector<int> vi;
set<int> si;
cin>>n;
while(n>0){
if(vi.size()==0){
vi.push_back(1);
n -= 1;
posAkhir++;
}
else{
temp = vi[posAkhir]+1;
//
//minimumnya ku optimasi pake rumus deret, gak pake loop lagi gir..jadi komplesitasnya kurang n...
minimum = (temp*(temp+1))/2;
//cout<<temp<<" "<<minimum<<endl;
if(n>=minimum){
vi.push_back(temp);
n -= temp;
posAkhir++;
continue;
}
temp = vi[posAkhir];
minimum = (temp*(temp+1))/2;
if(n>=minimum){
vi.push_back(temp);
n -= temp;
posAkhir++;
continue;
}
temp = vi[posAkhir]-1;
vi.push_back(temp);
n -= temp;
posAkhir++;
}
}
cout<<vi.size()<<endl;
for(int i=0 ;i<vi.size();i++){
if(i==vi.size()-1)
cout<<vi[i]<<endl;
else
cout<<vi[i]<<" ";
}
return 0;
}
I2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxzdHJpbmc+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPHNldD4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBpbnQgbWFpbigpewogICAgaW50IG4sIHRlbXAsIG1pbmltdW09MCwgcG9zQWtoaXI9LTE7CiAgICB2ZWN0b3I8aW50PiB2aTsKICAgIHNldDxpbnQ+IHNpOwogICAgY2luPj5uOwogICAgd2hpbGUobj4wKXsKICAgICAgICBpZih2aS5zaXplKCk9PTApewogICAgICAgICAgICB2aS5wdXNoX2JhY2soMSk7CiAgICAgICAgICAgIG4gLT0gMTsKICAgICAgICAgICAgcG9zQWtoaXIrKzsKICAgICAgICB9CiAgICAgICAgZWxzZXsKICAgICAgICAgICAgdGVtcCA9IHZpW3Bvc0FraGlyXSsxOwogICAgICAgICAgICAvLwogICAgICAgICAgICAvL21pbmltdW1ueWEga3Ugb3B0aW1hc2kgcGFrZSBydW11cyBkZXJldCwgZ2FrIHBha2UgbG9vcCBsYWdpIGdpci4uamFkaSBrb21wbGVzaXRhc255YSBrdXJhbmcgbi4uLgogICAgICAgICAgICBtaW5pbXVtID0gKHRlbXAqKHRlbXArMSkpLzI7CiAgICAgICAgICAgIC8vY291dDw8dGVtcDw8IiAiPDxtaW5pbXVtPDxlbmRsOwogICAgICAgICAgICBpZihuPj1taW5pbXVtKXsKICAgICAgICAgICAgICAgIHZpLnB1c2hfYmFjayh0ZW1wKTsKICAgICAgICAgICAgICAgIG4gLT0gdGVtcDsKICAgICAgICAgICAgICAgIHBvc0FraGlyKys7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0ZW1wID0gdmlbcG9zQWtoaXJdOwogICAgICAgICAgICBtaW5pbXVtID0gKHRlbXAqKHRlbXArMSkpLzI7CiAgICAgICAgICAgIGlmKG4+PW1pbmltdW0pewogICAgICAgICAgICAgICAgdmkucHVzaF9iYWNrKHRlbXApOwogICAgICAgICAgICAgICAgbiAtPSB0ZW1wOwogICAgICAgICAgICAgICAgcG9zQWtoaXIrKzsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAKICAgICAgICAgICAgdGVtcCA9IHZpW3Bvc0FraGlyXS0xOwogICAgICAgICAgICB2aS5wdXNoX2JhY2sodGVtcCk7CiAgICAgICAgICAgIG4gLT0gdGVtcDsKICAgICAgICAgICAgcG9zQWtoaXIrKzsKICAgICAgICB9CiAgICB9CiAgICBjb3V0PDx2aS5zaXplKCk8PGVuZGw7CiAgICBmb3IoaW50IGk9MCA7aTx2aS5zaXplKCk7aSsrKXsKICAgICAgICBpZihpPT12aS5zaXplKCktMSkKICAgICAgICAgICAgY291dDw8dmlbaV08PGVuZGw7CiAgICAgICAgZWxzZQogICAgICAgICAgICBjb3V0PDx2aVtpXTw8IiAiOwogICAgfQogICAgcmV0dXJuIDA7CiB9