#include <bits/stdc++.h>
using namespace std;
const long long N = 1e5 + 10;
long long ans = 0;
long long mm(long long x) {
  long long l = 1, r = N;
  while (l < r) {
    long long m = (l + r) / 2;
    if (m * m * m > x)
      r = m;
    else
      l = m + 1;
  }
  return l - 1;
}
pair<long long, long long> d(long long x) {
  if (x < 8)
    return make_pair(x, x);
  else {
    pair<long long, long long> a, b;
    long long i = mm(x);
    a = d(x - i * i * i);
    a.first += 1;
    a.second += i * i * i;
    b = d(i * i * i - (i - 1) * (i - 1) * (i - 1) - 1);
    b.first += 1;
    b.second += (i - 1) * (i - 1) * (i - 1);
    return max(a, b);
  }
}
int main() {
  long long n, i, j;
  pair<long long, long long> p;
  cin >> n;
  p = d(n);
  printf("%I64d %I64d", p.first, p.second);
  return 0;
}
