import math def factorize(n): factors = {} while n % 2 == 0: factors[2] = factors.get(2, 0) + 1 n //= 2 i = 3 max_i = math.isqrt(n) + 1 while i <= max_i and n > 1: while n % i == 0: factors[i] = factors.get(i, 0) + 1 n //= i max_i = math.isqrt(n) + 1 i += 2 if n > 1: factors[n] = 1 return factors def generate_divisors(factors): divisors = [1] for p in factors: exponents = [p**e for e in range(1, factors[p]+1)] new_divisors = [] for d in divisors: for exp in exponents: new_divisors.append(d * exp) divisors += new_divisors divisors = list(set(divisors)) divisors.sort() return divisors def find_min_t(n): if n == 1: return 0 factors = factorize(n) divisors = generate_divisors(factors) min_sum = float('inf') cube_root = round(n ** (1/3)) max_a = cube_root for a in divisors: if a > max_a: continue if n % a != 0: continue m = n // a sub_factors = {} for p in factors: exp = 0 temp = a while temp % p == 0: exp += 1 temp //= p sub_factors[p] = factors[p] - exp m_divisors = generate_divisors(sub_factors) sqrt_m = math.isqrt(m) for b in m_divisors: if b < a: continue if b > sqrt_m: continue if m % b != 0: continue c = m // b if c < b: continue current_sum = a + b + c if current_sum < min_sum: min_sum = current_sum return min_sum - 3 n = int(input()) if n == 1: print("0 0") else: tmin = find_min_t(n) tmax = n - 1 print(f"{tmin} {tmax}")