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).
n = int(input())
def factorz(bc):
    fs = []; f = 2
    while f * f <= bc:
        if bc % f == 0:
            fs.append(f)
            bc //= f
        else:
            f += 1
    fs.append(bc)
    return fs
ps = factorz(n)
rs = []
for i in range(2, n+1):
    if(n % i == 0): rs.append(i)
way = []; rem = n
primes = [2,3,5,7,11,13,17,19,23,29,31,37,41]
# this will use at most 10 primes
def best(i, remi):
    if remi == 1: return 1
    m = 10**19
    for d in rs:
        if remi % d == 0:
            # i-th prime will use d
            mm = primes[i] ** (d-1) * best(i+1, remi // d)
            if mm < m:
                m = mm
    return m
print(best(0,n))