#include <stdio.h>

/* 200*(200+1)*(200+2)/6==1353400 */
int num_list[200];

int result_normal[1000001];
int result_kisuu[1000001];

int main(void) {
	int n;
	for(n=1;n<=200;n++) {
		num_list[n-1]=n*(n+1)*(n+2)/6;
	}
	result_normal[0]=result_kisuu[0]=0;
	for(n=1;n<1000000;n++) {
		int i;
		int normal=10000000;
		int kisuu=10000000;
		for(i=0;i<200 && num_list[i]<=n;i++) {
			int nowresult;
			nowresult=result_normal[n-num_list[i]]+1;
			if(nowresult<normal)normal=nowresult;
			if(num_list[i]%2==1) {
				nowresult=result_kisuu[n-num_list[i]]+1;
				if(nowresult<kisuu)kisuu=nowresult;
			}
		}
		result_normal[n]=normal;
		result_kisuu[n]=kisuu;
	}
	while(scanf("%d",&n)==1 && n>0) {
		printf("%d %d\n",result_normal[n],result_kisuu[n]);
	}
	return 0;
}