#include using namespace std; using ll = long long; class sieve { protected: int _n; std::vector _f; public: sieve(int n) : _n(n), _f(n+1, true) { _f[0] = false; _f[1] = false; for (int i = 4; i < _f.size(); i+=2) _f[i] = false; for (int i = 3; i*i < _f.size(); i+=2) { if (!_f[i]) continue; for (int j = i*i; j < _f.size(); j += i) _f[j] = false; } } bool isprime(int x) const { return _f[x]; } int size() const { return _n; } }; int main() { int N; cin >> N; if (N == 1) { cout << 1 << endl; return 0; } sieve s(1e5+2000); vector primes; for (int i = 1e5+1; i <= s.size(); i++) { if (s.isprime(i)) primes.push_back(i); if (primes.size() > 9) break; } vector a; for (int i = 0; i < primes.size(); i++) { for (int j = i; j < primes.size(); j++) { a.push_back((ll)primes[i] * primes[j]); } } sort(a.begin(), a.end()); cout << a[N-2] << endl; }