← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

const INF uint64 = 1000000000000000000

var primes = []uint64{2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53}
var ans uint64

func dfs(idx, lastExp, rem int, curr uint64) {
	if rem == 1 {
		if curr < ans {
			ans = curr
		}
		return
	}
	if idx >= len(primes) || curr >= ans {
		return
	}
	p := primes[idx]
	pPow := uint64(1)
	for e := 1; e <= lastExp; e++ {
		if pPow > INF/p {
			break
		}
		pPow *= p
		if curr > INF/pPow {
			break
		}
		if rem%(e+1) == 0 {
			newCurr := curr * pPow
			if newCurr < ans {
				dfs(idx+1, e, rem/(e+1), newCurr)
			}
		}
	}
}

func main() {
	in := bufio.NewReader(os.Stdin)
	var n int
	if _, err := fmt.Fscan(in, &n); err != nil {
		return
	}
	if n == 1 {
		fmt.Println(1)
		return
	}
	ans = INF
	dfs(0, 60, n, 1)
	fmt.Println(ans)
}