A = int(input()) # A の Max は 10**18 < 2**60 のため、NM が 120を超えることはない # つまり N は 2~ 120くらいまで考えれば十分 ansl = [] for n in range(2, 120 + 1): # n**x が初めて A 以上になるときを見つける num = n m = 1 for _ in range(60): if num >= A: candi = n * m ansl.append(candi) break num *= n m += 1 print(min(ansl))