#include <iostream>#include <stdio.h>#include <string.h>using namespace std;int three[60],two[100];bool mark[160000];void init(){memset(mark,false,sizeof(mark));for(int i=0;i<=54;i++){int tmp=i*i*i;mark[tmp]=true;for(int j=0;;j++){int s=tmp+(j)*(j+1)*(j+2)/6;if(s>=160000) break;mark[s]=true;}}}int main(){init();int n;while(~scanf("%d",&n)&&n){while(!mark[n])n--;printf("%dn",n);}return 0;}


