#include <stdio.h>

int possible_max[151201];

void make_list(void) {
	int now,now2;
	int i,j;
	for(i=0,now=0;now<=151200;i++,now=i*i*i) {
		for(j=0,now2=now;now2<=151200;j++,now2=now+(j*(j+1)*(j+2)/6)) {
			possible_max[now2]=1;
		}
	}
	possible_max[0]=0;
	for(i=1;i<=151200;i++) {
		possible_max[i]=possible_max[i]?i:possible_max[i-1];
	}
}

int main(void) {
	int query;
	make_list();
	while(1) {
		scanf("%d",&query);
		if(query==0)break;
		printf("%d\n",possible_max[query]);
	}
	return 0;
}