#include <bits/stdc++.h>
using namespace std;
long long m, tot, cnt;
long long geta(long long limit) {
  long long res = 1;
  while (res * res * res <= limit) res++;
  return res - 1;
}
void dfs(long long limit, long long num, long long vol) {
  if (limit == 0) {
    if (cnt < num) {
      cnt = num;
      tot = vol;
    }
    if (cnt == num) tot = max(tot, vol);
    return;
  }
  long long a = geta(limit);
  dfs(limit - a * a * a, num + 1, vol + a * a * a);
  if (a > 1) {
    dfs(a * a * a - 1 - (a - 1) * (a - 1) * (a - 1), num + 1,
        vol + (a - 1) * (a - 1) * (a - 1));
  }
}
int main() {
  while (scanf("%I64d", &m) != EOF) {
    cnt = 0, tot = 0;
    dfs(m, 0, 0);
    printf("%I64d %I64d\n", cnt, tot);
  }
}
