import Control.Monad
import Control.Applicative

main :: IO ()
main = do
  n <- readLn
  mapM_ print $ destr n $ po n 10000000 0

po :: Integer -> Integer -> Integer -> Integer
po x y z
  | y == z+1 = y
  | otherwise = let
      m = (y+z)`div`2
      u = m*(m+1)`div`2
    in if u >= x
      then po x m z
      else po x y m

destr :: Integer -> Integer -> [Integer]
destr 0 _ = []
destr target from
  | target >= from = from : destr (target-from) (from-1)
  | otherwise = destr target (from-1)