#include #include using namespace std; int dp[10000001]; int choose(int now){ if(dp[now] != -1){ return dp[now]; }else if(now){ int ans = 1e9; for(int i = 1; i * (i + 1) / 2 <= now; i++){ ans = min(ans, choose(now - i * (i + 1) / 2)); } return dp[now] = ans + 1; }else{ return 0; } } int main(){ int N; cin >> N; fill(dp, dp + 10000001, -1); cout << choose(N) << endl; }