#include<stdio.h>
#define M 1000010
int zMIN(int a,int b){
  if(a==0||a>b)return b;
  return a;
}
int d1[M],d2[M];
int main(){
  int n=200,t[200],i,j;
  for(i=1;i<200;i++)t[i]=i*(i+1)*(i+2)/6;
  for(i=0;i<M;i++){
    for(j=1;j<200;j++){
      if(i+t[j]>=M)continue;
                d1[i+t[j]]=zMIN(d1[i+t[j]],d1[i]+1);
      if(t[j]%2)d2[i+t[j]]=zMIN(d2[i+t[j]],d2[i]+1);
    }
  }
  while(scanf("%d",&n),n)printf("%d %d\n",d1[n],d2[n]);
  return 0;
}