#include <bits/stdc++.h>
const long long n = 100000;
long long m, cou = 0, mi = 0, a[n + 3] = {0}, m3[n + 2];
int main() {
  scanf("%I64d", &m);
  m3[n + 1] = 1e18;
  m3[n + 2] = 1e18;
  for (long long i = 1; i <= n + 1; i++) m3[i] = i * i * i;
  for (long long i = 1; i <= n; i++) {
    long long val = m3[i + 1] / m3[i] - ((m3[i + 1]) % m3[i] == 0);
    if (val > (m - mi) / (m3[i])) val = (m - mi) / m3[i];
    if (mi + val * m3[i] >= m3[i + 1])
      val = (m3[i + 1] - mi) / (m3[i]) - (mi + val * m3[i] == m3[i + 1]);
    if (mi + m3[i] * val > m) break;
    if (val > 0) {
      mi += m3[i] * val;
      cou += val;
      a[i] = val;
    }
  }
  long long j = n, ma = m - mi, sum = mi;
  for (long long i = n; i >= 1; i--) {
    while (i + 1 < j && m3[i] + ma < m3[j]) {
      sum -= a[j] * m3[j];
      if (ma > m3[j] - sum) ma = m3[j] - sum;
      j--;
    }
    while (j > i && a[i] > 0 && m3[i] + ma >= m3[j]) {
      a[i]--;
      ++a[j];
      mi += m3[j] - m3[i];
      sum += m3[j] - m3[i] - a[j] * m3[j];
      ma -= m3[j] - m3[i];
      if (ma > m3[j] - sum) ma = m3[j] - sum;
      j--;
    }
  }
  printf("%I64d %I64d", cou, mi);
  return 0;
}
