#include <iostream>
using namespace std;
// 前 10 个质数,因为 2 * 3 * 5 * 7 * 11 * 13 * 17 * 19 * 23 * 29 > 2 * 10^9
const int primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
long long n;
long long ans = 0, max_cnt = 0;
// 深度优先搜索函数
// u 表示当前枚举到第几个质数
// last 表示上一个质数的指数
// prod 表示当前的乘积
// cnt 表示当前数的约数个数
void dfs(int u, int last, long long prod, long long cnt) {
// 如果约数个数更多或者约数个数相同但当前数更小,则更新答案
if (cnt > max_cnt || (cnt == max_cnt && prod < ans)) {
max_cnt = cnt;
ans = prod;
}
// 枚举当前质数的指数
for (int i = 1; i <= last; i++) {
if (prod * primes[u] > n) break;
prod *= primes[u];
dfs(u + 1, i, prod, cnt * (i + 1));
}
}
int main() {
cin >> n;
// 从第一个质数开始搜索,初始指数上限为 30,初始乘积为 1,初始约数个数为 1
dfs(0, 30, 1, 1);
cout << ans << endl;
return 0;
}