n = int(input()) tri = [i*(i+1)//2 for i in range(1,4473)] ans = n def dfs(n,i,cnt): global ans if n == 0: ans = min(ans,cnt) return if ans <= cnt + (n-1)//tri[i]+1: return for j in range(i+1)[::-1]: if n >= tri[j]: dfs(n-tri[j],j,cnt+1) dfs(n,4471,0) print(ans)