#include<stdio.h>
#define M 151200
int main(){
  long long i;
  int j,n[60],m[100];
  char c[1000000]={1};
  for(i=0;i<60 ;i++)n[i]=i*i*i;
  for(i=0;i<100;i++)m[i]=(i*(i+1)*(i+2))/6;//printf("a\n");
  for(i=0;i<60;i++){
    for(j=0;j<100;j++){
      if(n[i]+m[j]<=M)c[n[i]+m[j]]=1;
    }
  }
  while(scanf("%d",&j),j){//printf("%d\n",c[j]);
    for(;c[j]==0;j--);
    printf("%d\n",j);
  }
  return 0;
}