#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
pair<long long, long long> res;
long long a[N];
void dfs(long long cur, long long cnt, long long sum) {
  if (!cur) {
    res = max(res, {cnt, sum});
    return;
  } else {
    int p = upper_bound(a + 1, a + N, cur) - a;
    --p;
    dfs(cur - a[p], cnt + 1, sum + a[p]);
    if (p > 1) dfs(a[p] - 1 - a[p - 1], cnt + 1, sum + a[p - 1]);
  }
}
int main() {
  for (int i = 1; i <= N - 1; ++i) a[i] = 1ll * i * i * i;
  long long m;
  scanf("%lld", &m);
  dfs(m, 0, 0);
  printf("%lld %lld\n", res.first, res.second);
  return 0;
}
