#include <iostream>
#include <cstring>
#include <vector>
#include <string>
#include <stack>
#include <map>
#include <iomanip>
#include <set>
#include <algorithm>
#include <cmath>
#include <deque>
#include <queue>
#include <ostream>
#include <math.h>
//#pragma warning (disable : 4996)
using namespace std;
vector<int>primes;
vector<int> prePrimes;
const int MAXint = int(1e4+500);
void SieveOfEratosthenes(int n)
{
bool prime[MAXint + 1];
memset(prime, true, sizeof(prime));
for (int p = 2; p*p <= n; p++)
{
if (prime[p] == true) {
for (int i = p * p; i <= n; i += p)
prime[i] = false;
}
}
for (int p = 3; p <= n; p += 2)
if (prime[p])
primes.push_back(p);
}
int main() {
primes.push_back(2);
SieveOfEratosthenes(MAXint);
// for (auto x : primes) cout << x << "\n";
for (int i = 0; i < primes.size() - 1; i++) {
for (int j = i + 1; j < primes.size(); j++) prePrimes.push_back(primes[i] * primes[j]);
}
cout <<primes.size()<<"\n";
cout << primes[primes.size()-1]<<"\n";
// cout << primes[primes.size()/1] <<"\n";
/*
for (auto x : primes) prePrimes.push_back(x*x*x);
sort(prePrimes.begin(), prePrimes.end());*/
/*int n;
cin >> n;
cout << prePrimes[n - 1] << "\n";*/
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHN0YWNrPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHNldD4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDxxdWV1ZT4KI2luY2x1ZGUgPG9zdHJlYW0+CiNpbmNsdWRlIDxtYXRoLmg+Ci8vI3ByYWdtYSB3YXJuaW5nIChkaXNhYmxlIDogNDk5NikKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdmVjdG9yPGludD5wcmltZXM7CnZlY3RvcjxpbnQ+IHByZVByaW1lczsKY29uc3QgaW50IE1BWGludCA9IGludCgxZTQrNTAwKTsKCgp2b2lkIFNpZXZlT2ZFcmF0b3N0aGVuZXMoaW50IG4pCnsKCWJvb2wgcHJpbWVbTUFYaW50ICsgMV07CgltZW1zZXQocHJpbWUsIHRydWUsIHNpemVvZihwcmltZSkpOwoJZm9yIChpbnQgcCA9IDI7IHAqcCA8PSBuOyBwKyspCgl7CgkJaWYgKHByaW1lW3BdID09IHRydWUpIHsKCQkJZm9yIChpbnQgaSA9IHAgKiBwOyBpIDw9IG47IGkgKz0gcCkKCQkJCXByaW1lW2ldID0gZmFsc2U7CgkJfQoJfQoJZm9yIChpbnQgcCA9IDM7IHAgPD0gbjsgcCArPSAyKQoJCWlmIChwcmltZVtwXSkKCQkJcHJpbWVzLnB1c2hfYmFjayhwKTsKfQppbnQgbWFpbigpIHsKCglwcmltZXMucHVzaF9iYWNrKDIpOwoJU2lldmVPZkVyYXRvc3RoZW5lcyhNQVhpbnQpOwoJLy8JZm9yIChhdXRvIHggOiBwcmltZXMpIGNvdXQgPDwgeCA8PCAiXG4iOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBwcmltZXMuc2l6ZSgpIC0gMTsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgcHJpbWVzLnNpemUoKTsgaisrKSBwcmVQcmltZXMucHVzaF9iYWNrKHByaW1lc1tpXSAqIHByaW1lc1tqXSk7Cgl9Cgljb3V0IDw8cHJpbWVzLnNpemUoKTw8IlxuIjsKCWNvdXQgPDwgcHJpbWVzW3ByaW1lcy5zaXplKCktMV08PCJcbiI7Ci8vCWNvdXQgPDwgcHJpbWVzW3ByaW1lcy5zaXplKCkvMV0gPDwiXG4iOwoJLyoKCWZvciAoYXV0byB4IDogcHJpbWVzKSBwcmVQcmltZXMucHVzaF9iYWNrKHgqeCp4KTsKCXNvcnQocHJlUHJpbWVzLmJlZ2luKCksIHByZVByaW1lcy5lbmQoKSk7Ki8KCS8qaW50IG47CgljaW4gPj4gbjsKCWNvdXQgPDwgcHJlUHJpbWVzW24gLSAxXSA8PCAiXG4iOyovCn0=