1000000000000000
 994
 200385
 3842529393411
 8
 409477218238717
 2
 419477218238718
 909383000
 7
 999088000000000
 265
 415000000238718
 780869426483087
 9
 850085504652042
 567000123
 980123123123123
 409477218238719
 385925923480002
 999998169714888
 936302451686999
 114
 999999993700000
 108000000057
 409477218238716
 112
 1
 409477218238718
 999971000299999
 409477318238718
 735412349812385
 113
 999999999999999
 123830583943
 899990298504716
 936302451687000
 995
 990000000000000
 936302451687001
 999986542686123
 850085504652041

18 999999993541753
 12 941
 14 200355
 17 3842529383076
 7 7
 17 409477218238717
 2 2
 18 419466459294818
 16 909381874
 7 7
 18 999087986204952
 11 212
 18 414993991790735
 18 780869407920631
 7 7
 18 850085504652042
 16 566998782
 18 980123123116482
 18 409477218238718
 17 385925923479720
 18 999998150030846
 18 936302448662019
 11 114
 18 999999993541753
 17 107986074062
 17 409477218238710
 10 106
 1 1
 18 409477218238718
 18 999969994441746
 18 409477218238718
 18 735409591249436
 10 113
 18 999999993541753
 17 123830561521
 18 899973747835553
 18 936302448662019
 12 995
 18 989983621692990
 18 936302448662019
 18 999969994441746
 18 850085504650655

import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.util.StringTokenizer;
import java.util.HashMap;
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 *
 * @author AlexFetisov
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        InputReader in = new InputReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskD_356 solver = new TaskD_356();
        solver.solve(1, in, out);
        out.close();
    }

    static class TaskD_356 {
        HashMap<Long, long[]> cache;

        public void solve(int testNumber, InputReader in, PrintWriter out) {
            cache = new HashMap<Long, long[]>();
            long n = in.nextLong();
            long[] res = rec(n);
            out.println(res[0] + " " + res[1]);
        }

        long getPower(long n) {
            long le = 1, ri = 100001, res = 0;
            while (le <= ri) {
                long e = (le + ri) / 2;
                if (e * e * e <= n) {
                    res = e;
                    le = e + 1;
                } else {
                    ri = e - 1;
                }
            }
            return res * res * res;
        }

        long[] rec(long n) {
            if (n == 0) return new long[]{0, 0};
            if (cache.containsKey(n)) {
                return cache.get(n);
            }
            long maxPower = getPower(n);
            long[] r1 = rec(maxPower - 1);
            long[] r2 = rec(n - maxPower).clone();
            r2[0]++;
            r2[1] += maxPower;
            if (r2[0] > r1[0] || r2[0] == r1[0] && r2[1] > r1[1]) {
                r1 = r2;
            }
            cache.put(n, r1);
            return r1;
        }

    }

    static class InputReader {
        private BufferedReader reader;
        private StringTokenizer stt;

        public InputReader(InputStream stream) {
            reader = new BufferedReader(new InputStreamReader(stream));
        }

        public String nextLine() {
            try {
                return reader.readLine();
            } catch (IOException e) {
                return null;
            }
        }

        public String nextString() {
            while (stt == null || !stt.hasMoreTokens()) {
                stt = new StringTokenizer(nextLine());
            }
            return stt.nextToken();
        }

        public long nextLong() {
            return Long.parseLong(nextString());
        }

    }
}

