#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;
}
I2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8aW50PiBwcmltZXMgPSB7IDIsIDMsIDUsIDcsIDExLCAxNywgMjMgfTsKCWludCBudW0gPSAxMDAwMDU5MTc7CgkvLyBpbml0aWFsaXplIGJlc3RDYW5kaWRhdGUgYXMgYSBwb3dlciBvZiBzb21lIHByaW1lIGdyZWF0ZXIgdGhhbiBudW0KCWludCBiZXN0Q2FuZGlkYXRlID0gMTsKCXdoaWxlIChiZXN0Q2FuZGlkYXRlIDwgbnVtKSBiZXN0Q2FuZGlkYXRlICo9IHByaW1lc1swXTsKCXNldDxpbnQ+IHM7CglzLmluc2VydCgxKTsKCXdoaWxlIChzLnNpemUoKSkgewoJCWludCBjdXJyZW50ID0gKnMuYmVnaW4oKTsKCQlzLmVyYXNlKHMuYmVnaW4oKSk7CgkJZm9yIChhdXRvIHAgOiBwcmltZXMpIHsgLy8gZ2VuZXJhdGUgbmV3IGNhbmRpZGF0ZXMKCQkJaW50IG5ld0NhbmRpZGF0ZSA9IGN1cnJlbnQgKiBwOwoJCQlpZiAobmV3Q2FuZGlkYXRlIDwgbnVtKSB7CgkJCQkvLyBuZXcgbG93ZXIgY2FuZGlkYXRlcyBzaG91bGQgYmUgc3RvcmVkLgoJCQkJaWYgKHMuZmluZChuZXdDYW5kaWRhdGUpID09IHMuZW5kKCkpCgkJCQkJcy5pbnNlcnQobmV3Q2FuZGlkYXRlKTsKCQkJfQoJCQllbHNlIHsKCQkJCWlmIChuZXdDYW5kaWRhdGUgPCBiZXN0Q2FuZGlkYXRlKSBiZXN0Q2FuZGlkYXRlID0gbmV3Q2FuZGlkYXRlOwoJCQkJYnJlYWs7IC8vIGZ1cnRoZXIgaXRlcmF0aW9ucyB3aWxsIGdlbmVyYXRlIG9ubHkgbGFyZ2VyIG51bWJlcnMKCQkJfQoJCX0KCX0KCWNvdXQgPDwgYmVzdENhbmRpZGF0ZTsKfQ==