#include<stdio.h>
int MIN(int a,int b){return a<b?a:b;}
int d[1000010],c[1000010],M=1000005,a,i,j;
int main(){
  for(i=0;i<M;i++)d[i]=c[i]=1e7;
  d[0]=c[0]=0;
  for(i=1;i<210;i++){
    a=(i*(i+1)*(i+2))/6;
    for(j=0;j+a<M;j++)d[j+a]=MIN(d[j+a],d[j]+1);
    if(a%2){
      for(j=0;j+a<M;j++)c[j+a]=MIN(c[j+a],c[j]+1);
    }
  }
  while(scanf("%d",&a),a)printf("%d %d\n",d[a],c[a]);
  return 0;
}