#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1024000000,1024000000")
using namespace std;
const double pi = acos(-1.0), eps = 1e-6;
void File() {
  freopen("D:\\in.txt", "r", stdin);
  freopen("D:\\out.txt", "w", stdout);
}
template <class T>
inline void read(T &x) {
  char c = getchar();
  x = 0;
  while (!isdigit(c)) c = getchar();
  while (isdigit(c)) {
    x = x * 10 + c - '0';
    c = getchar();
  }
}
long long n, ans2;
int ans1;
void dfs(long long x, int a1, long long a2) {
  if (a1 > ans1)
    ans1 = a1, ans2 = a2;
  else if (a2 == ans1)
    ans2 = max(ans2, a2);
  if (x == 0) return;
  long long L = 1, R = 100000, pos;
  while (L <= R) {
    long long mid = (L + R) / 2;
    if (mid * mid * mid <= x)
      pos = mid, L = mid + 1;
    else
      R = mid - 1;
  }
  dfs(x - pos * pos * pos, a1 + 1, a2 + pos * pos * pos);
  if (pos * pos * pos - 1 - (pos - 1) * (pos - 1) * (pos - 1) >= 0)
    dfs(pos * pos * pos - 1 - (pos - 1) * (pos - 1) * (pos - 1), a1 + 1,
        a2 + (pos - 1) * (pos - 1) * (pos - 1));
}
int main() {
  scanf("%lld", &n);
  dfs(n, 0, 0);
  printf("%d %lld\n", ans1, ans2);
  return 0;
}
