#include<stdio.h>
#define MAX (1000000-1)

int tcomp[MAX+1];	// 各自然数を構成するために必要な正四面体数の数
int otcomp[MAX+1];	// 各自然数を構成するために必要な奇数の正四面体数の数

int min(int a,int b){
	return a<b?a:b;
}
int main(){
	int i,n,m;
	int in;
	for(i=0;i<=MAX;i++){
		tcomp[i]=otcomp[i]=MAX;
	}
	tcomp[0]=otcomp[0]=0;
	for(i=0;i<=MAX;i++){
		for(n=1;;n++){
			m = n*(n+1)*(n+2)/6;
			if(MAX < i+m)break;
			tcomp[i+m] = min(tcomp[i+m],tcomp[i]+1);
			if(m&1)
				otcomp[i+m] = min(otcomp[i+m],otcomp[i]+1);
		}
	}
	while(scanf("%d",&in)==1&&in){
		printf("%d %d\n",tcomp[in],otcomp[in]);
	}
}