OI VIII - ant

// 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;
}