#include <bits/stdc++.h>   using namespace std;   vector<long long> X;   map<long long, pair<int, long long> > M;   pair<int, long long> go(long long x) {     if (x <= 1) return {x, x};     if (M.find(x) != M.end()) return M[x];     int i = upper_bound(X.begin(), X.end(), x) - X.begin() - 1;     int p1, p2;     long long q1, q2;     pair<int, long long> P1;     P1 = go(x - X[i]);     p1 = P1.first;     q1 = P1.second;     P1 = go(X[i] - 1);     p2 = P1.first;     q2 = P1.second;     return M[x] = max(make_pair(p1 + 1, q1 + X[i]), {p2, q2});   }   int main() {     for (int i = 0; i <= 1e5 + 7; ++i) X.push_back(1LL * i * i * i);     long long x;     cin >> x;     pair<int, long long> Ans;     Ans = go(x);     cout << Ans.first <<     << Ans.second <<   n ;   }   