#include <set>
#include <vector>
#include <iostream>
using namespace std;

int main() {
	vector<int> primes = { 2, 3, 5, 7, 11, 17, 23 };
	int num = 100005917;
	// initialize bestCandidate as a power of some prime greater than num
	int bestCandidate = 1;
	while (bestCandidate < num) bestCandidate *= primes[0];
	set<int> s;
	s.insert(1);
	while (s.size()) {
		int current = *s.begin();
		s.erase(s.begin());
		for (auto p : primes) { // generate new candidates
			int newCandidate = current * p;
			if (newCandidate < num) {
				// new lower candidates should be stored.
				if (s.find(newCandidate) == s.end())
					s.insert(newCandidate);
			}
			else {
				if (newCandidate < bestCandidate) bestCandidate = newCandidate;
				break; // further iterations will generate only larger numbers
			}
		}
	}
	cout << bestCandidate;
}