#include <stdio.h>
#define MAXI 1000000
// DP(????????????????????????)
int main(void){
  int dp[MAXI+1], dp2[MAXI+1];
  int i, j, t, n;
  for(i=0; i<=MAXI; i++) dp[i] = dp2[i] = i;
  i = 2;
  while(1){
    if((t = (int) i * (i+1) * (i+2) / 6) > MAXI) break;
    if(t % 2)
      for(j=t; j<=MAXI; j++)
        if(dp2[j] > dp2[j-t] + 1) dp2[j] = dp2[j-t] + 1;
    for(j=t; j<=MAXI; j++){
      if(dp[j] > dp[j-t] + 1) dp[j] = dp[j-t] + 1;
    }
    i++;
  }
  while(1){
    scanf("%d", &n);
    if(n == 0) break;
    printf("%d %d\n", dp[n], dp2[n]);
  }
} 