Given the number *n*, find the smallest positive integer which has exactly *n* divisors. It is guaranteed that for the given *n* the answer will not exceed 10<sup class="upper-index">18</sup>.
The first line of the input contains integer *n* (1 ≤ *n* ≤ 1000).
p = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43]
it = 0
def solve(n, pos):
    global it
    it+=1
    
    # si n>1 ans = 10**18 sino ans =1 dado que solo se necesita 1 divisor y 
    # solo 1 cumple tener un unico divisor
    ans = 10 ** 18 if n > 1 else 1
    for exp in range(2, n + 1): 
        # analizamos los posibles exponentes como se calculo matematicamente no
        #  tiene sentido pregunta por un exponente que no cumpla que (exp+1)|n
        if n % exp == 0: 
            # ans queda siendo la menor de las respuestas hasta ahora o la 
            # nueva respuesta se calcula mediante el primo que se esta 
            # analizando elevado al exponente -1 * solve en los divisores
            # restantes n/exp cambiando la pos para analiar el primo siguiente
            
            ans = min(ans, p[pos] ** (exp - 1) * solve(n // exp, pos + 1)) 
    return ans

inp = int(input())
print(solve(inp, 0))
print(it)