// directives #include #include #include #include #include #include #include #include #include #include #include #include // using namespace std; // macros #define FOR(i,a,b) for(int i(a);i=b;--i) #define CL(a,x) memset(a,x,sizeof(a)) #define FL(a,x) fill_n(a,sizeof(a)/sizeof(a[0]),x) #define asort(a,n) sort(a,a+n) #define vsort(v,n) sort(v.begin(), v.begin()+n) #define sz(x) x.size() #define all(x) x.begin(), x.end() #define SSTR( x ) dynamic_cast< std::ostringstream & >( ( std::ostringstream() << std::dec << x ) ).str() #define TI(x) int x = rint() #define TII(x,y) int x = rint(),y = rint() #define TIII(x,y,z) int x = rint(),y = rint(),z = rint() // typedef long long LL; typedef vector vi; int rint() { int x; if(scanf("%d",&x)!=1) return -1; return x; } LL rLL() { LL x; if(scanf("%I64d",&x)!=1) return -1; return x; } string rstring() { static char buf[100000]; if(scanf("%s",buf)!=1) return ""; return buf; } int main() { TI(N); double root = sqrt(1+8*N); root = (root - 1) / 2; int M = (int)ceil(root); printf("%d\n", M); REP(i,M) printf("%d ", i+1); return 0; }