public class Euler108 {
    static int[] primes = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 };
    static long best;

    static void dfs(int idx, int maxExp, long n, int divCount, int target) {
        if (divCount >= target) {
            best = Math.min(best, n);
            return;
        }
        if (idx >= primes.length)
            return;
        long val = n;
        for (int e = 1; e <= maxExp; e++) {
            val *= primes[idx];
            if (val >= best)
                break;
            dfs(idx + 1, e, val, divCount * (2 * e + 1), target);
        }
    }

    public static void main(String[] args) {
        best = Long.MAX_VALUE;
        dfs(0, 63, 1, 1, 2001);
        System.out.println(best);
    }
}
