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.io.BufferedReader;
import java.util.regex.Pattern;
import java.io.InputStreamReader;
import java.io.InputStream;

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

    static class TaskD {
        long pow3(long x) {
            return x * x * x;
        }

        long pow13(long sum) {
            long x = (int) Math.pow((double) sum, 1d / 3d);
            while (pow3(x) <= sum) {
                x++;
            }
            return x - 1l;
        }

        TaskD.Pair step(long m) {
            if (m <= 0)
                return new TaskD.Pair(0, 0);
            if (m < 8)
                return new TaskD.Pair(m, m);

            long a = pow13(m);
            long a3 = pow3(a);
            long a13 = pow3(a - 1l);

            TaskD.Pair p1 = step(m - a3);
            TaskD.Pair p2 = step(a3 - 1l - a13);
            p1.count++;
            p1.n += a3;
            p2.count++;
            p2.n += a13;
            if (p1.count < p2.count) {
                return p2;
            } else if (p2.count < p1.count) {
                return p1;
            } else if (p1.n < p2.n) {
                return p2;
            } else {
                return p1;
            }

        }

        public void solve(int testNumber, FastScanner in, PrintWriter out) {
            long m = in.nextLong();

            TaskD.Pair p = step(m);
            out.printf("%d %d\n", p.count, p.n);

        }

        static class Pair {
            long count;
            long n;

            public Pair(long count, long n) {
                this.count = count;
                this.n = n;
            }

        }

    }

    static class FastScanner {
        final BufferedReader input;
        String[] buffer;
        int pos;
        final static Pattern SEPARATOR = Pattern.compile("\\s+");

        public FastScanner(InputStream inputStream) {
            input = new BufferedReader(new InputStreamReader(inputStream));
        }

        private String read() {
            try {
                if (buffer == null || pos >= buffer.length) {
                    buffer = SEPARATOR.split(input.readLine());
                    pos = 0;
                }
                return buffer[pos++];
            } catch (Exception ex) {
                throw new RuntimeException(ex);
            }
        }

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

    }
}

