#include<stdio.h>

int bs (int [], int, int);

int min(int b,int c)
{
	if(b>=c) return c;
	return b;
}

int main(void)
{
	int i,j,n,a,dp[1000001],dp2[1000001];
	
	for(i=0;i<=1000000;i++)
	{
		dp[i]=i;
		dp2[i]=i;
	}
	for(i=3,a=4;a<=1000000;i++)
	{
		for(j=a;j<=1000000;j++)
		{
			dp[j]=min(dp[j],dp[j-a]+1);
		}
		
		if(a%2==1)
		{
			for(j=a;j<=1000000;j++)
		    {
			    dp2[j]=min(dp2[j],dp2[j-a]+1);
	    	}
		}
		a=i*(i+1)*(i+2)/6;
	}
	
	while(1)
	{
		scanf("%d",&n);
		if(n==0) break;
		printf("%d %d\n",dp[n],dp2[n]);
	}
	return 0;
}