local mfl = math.floor

local function func(i)
  return mfl(i * (i + 1) / 2)
end

local function lower_bound(x, max)
  if x == 1 then return 1 end
  if func(max) < x then return max + 1 end
  local min = 1
  while(1 < max - min) do
    local mid = mfl((min + max) / 2)
    if(func(mid) < x) then
      min = mid
    else
      max = mid
    end
  end
  return max
end

local x = io.read("*n")
local r = lower_bound(x, x)
print(r)
x = x - r
while 1 <= x do
  r = lower_bound(x, r - 1)
  print(r)
  x = x - r
end
