import Data.List

bsearch f (a,b)
    | a+1 == b = a
    | f m  = bsearch f (m,b)
    | otherwise = bsearch f (a,m)
    where m = a + (b-a)`div`2

main=do
    n<-readLn::IO Int
    let m = bsearch (\x->x^2+x < n*2) (0,n+1)
    putStr$unlines$map show$s ((m+1)*(m+2)`div`2 -n) [m+1,m..1]
    
s 0 r = r
s a (x:r)|a-x>=0 = s (a-x) r|a-x<0 = x : s a r