// https://szkopul.edu.pl/problemset/problem/AB6xXa9zVukjNRe7nvPqxbVQ/site/?key=submissions
// Zadanie Liczby antypierwsze
#include <bits/stdc++.h>
long long greatest_hcn_less_than(long long n) {
std::vector<int> primes = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41};
long long best_hcn = 1;
long long best_divisors = 1;
std::function<void(int, long long, long long, int)> dfs = [&](int prime_idx, long long current_hcn, long long current_divisors, int max_power) {
if (prime_idx >= primes.size()) return;
if (current_hcn >= n) return;
if (current_divisors > best_divisors || (current_divisors == best_divisors && current_hcn < best_hcn)) {
best_hcn = current_hcn;
best_divisors = current_divisors;
}
long long p = 1;
for (int power = 1; power <= max_power; ++power) {
p *= primes[prime_idx];
if (current_hcn * p >= n) break;
dfs(prime_idx + 1, current_hcn * p, current_divisors * (power + 1), power);
}
};
dfs(0, 1, 1, 60);
return best_hcn;
}
int main() {
std::ios_base::sync_with_stdio(0);
std::cin.tie(0);
std::cout.tie(0);
long long n;
std::cin >> n;
std::cout << greatest_hcn_less_than(n + 1) << '\n';
return 0;
}