package main

import (
	"fmt"
	"sort"
)

func divisor(N int) []int {
	ans := make([]int, 0)

	for i := 1; i * i <= N; i++ {
		if N % i == 0 {

			ans = append(ans, i)
			if i * i != N {
				ans = append(ans, N / i)
			}
		}

	}
	sort.Ints(ans)
	return ans
}

func main() {
	var N int
	fmt.Scanf("%d", &N)
	mn := N
	divs := divisor(N)

	// オーバーフロー対策
	for i := 0; i < len(divs) && divs[i] <= 1000000 && divs[i] * divs[i] * divs[i] <= N; i++ {
		if N % divs[i] != 0 {
			continue
		}

		for j := 0; j < len(divs)&& divs[j] <= 10000000  && divs[j] * divs[j] * divs[i] <= N; j++ {
			if N % (divs[i] * divs[j]) != 0 {
				continue
			}

			k := N / (divs[i] * divs[j])
			mn = min(mn, max(0, divs[i] + divs[j] + k - 3))
		}
	}
	fmt.Println(mn, N - 1)
}

func min(a int, b int) int {
	if a < b {
		return a
	}
	return b
}
func max(a int, b int) int {
	if a < b {
		return b
	}
	return a
}