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).
#!/usr/bin/env python3

n = int(input())

def get_factors(n):
  # Find all prime factors of n, including multiples
  result = []
  factor = 2
  while (n != 1):
    if ((n % factor) == 0):
      n = n // factor
      result.append(factor)
    else:
      factor += 1
  return result

factors = get_factors(n)

# Decide on the power of each prime in the answer
primes = [2,3,5,7,11,13,17,19,23,29]
options = [1 for p in primes] # 1 option means that there is only one possible power: 0

for f in reversed(factors):
  prime_index = 0
  while (primes[prime_index]**(options[prime_index]*(f-1))) > (primes[prime_index+1]**(options[prime_index+1]*(f-1))):
    prime_index +=1
  options[prime_index] *= f

answer = 1
for (option, prime) in zip(options, primes):
  answer *= prime**(option-1)

print(answer)