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.*;
import java.util.*;



public class bear_tower
{
	public long cuberoot(long m)
		{return((long)Math.exp(Math.log(m)/3));}
	
	public pair BestOf(pair a1, pair a2)
	{
		if (a1 == null)
			return(a2);
		if (a2 == null)
			return(a1);
		
		if (a1.returnNoCubes() > a2.returnNoCubes())
		{
			return(a1);
		}
		
		if (a1.returnNoCubes() == a2.returnNoCubes())
		{
			if (a1.returnVol()>= a2.returnVol())
				return(a1);
			else
				return(a2);
		}
		
		if (a1.returnNoCubes() < a2.returnNoCubes())
		{
			return(a2);
		}
		return null;
		

		
	}
	
	public pair rec(long m, pair p)
	{
		if (m > 7)
		{
			long a = cuberoot(m);
			long m1 = m - a*a*a;
			long m2 = a*a*a - 1 -(a-1)*(a-1)*(a-1);
			
			long volformed1 = p.returnVol()+a*a*a;
			long volformed2 = p.returnVol()+(a-1)*(a-1)*(a-1);
			
			
			long noc1 = p.returnNoCubes()+1;
			long noc2 = p.returnNoCubes()+1;
			
			pair p1 = new pair();
			p1.assignpair(volformed1, noc1);
			pair p2 = new pair();
			p2.assignpair(volformed2, noc2);
			
			
			return(BestOf(rec(m1, p1), rec(m2, p2)));
			
		}
		else
			{
				p.assignVol(p.returnVol()+m);
				p.assignNoCubes(p.returnNoCubes()+m);
				//System.out.println(p.returnNoCubes()+" "+ p.returnVol());
				return(p);
			}
			
		
	}
	
	public static void main(String args[])throws IOException
	{
		
		Scanner sc = new Scanner(System.in);
		bear_tower bt = new bear_tower();
		
		
		long m = sc.nextLong();
		pair p0 = new pair();
		pair p = bt.rec(m, p0 );
		
		//System.out.println(bt.cuberoot(m));
		System.out.println(p.returnNoCubes()+" "+ p.returnVol());
		
		
		
	}
}

class pair
{
	private long vol;
	private long noCubes;
	
	pair()
	{
		vol = 0;
		noCubes = 0;
	}
	void assignpair(long volume, long noc)
	{
		vol = volume;
		noCubes = noc;
	}
	
	long returnVol()
	{
		return(vol);
	}
	
	long returnNoCubes()
	{
		return(noCubes);
	}
	
	void assignNoCubes(long noc)
	{
		noCubes = noc;
	}
	void assignVol(long volume)
	{
		vol = volume;
	}
}




