n = int(input()) from collections import defaultdict INF = 10**18 dp = defaultdict(lambda:INF) dp[0] = 0 for i in reversed(range(1, 5000)): nx = defaultdict(lambda: INF) a = i*(i+1)//2 for k, v in dp.items(): q, r = divmod(n-k, a) nx[a*q+k] = min(nx[a*q+k], v+q) dp = nx print(dp[n])