#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);
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";
cout << primes.size() << "\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]);
}
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+IHByZVByaW1lczsKY29uc3QgaW50IE1BWGludCA9IGludCgxZTQpOwoKCnZvaWQgU2lldmVPZkVyYXRvc3RoZW5lcyhpbnQgbikKewoJYm9vbCBwcmltZVtNQVhpbnQgKyAxXTsKCW1lbXNldChwcmltZSwgdHJ1ZSwgc2l6ZW9mKHByaW1lKSk7Cglmb3IgKGludCBwID0gMjsgcCpwIDw9IG47IHArKykKCXsKCQlpZiAocHJpbWVbcF0gPT0gdHJ1ZSkgewoJCQlmb3IgKGludCBpID0gcCAqIHA7IGkgPD0gbjsgaSArPSBwKQoJCQkJcHJpbWVbaV0gPSBmYWxzZTsKCQl9Cgl9Cglmb3IgKGludCBwID0gMzsgcCA8PSBuOyBwICs9IDIpCgkJaWYgKHByaW1lW3BdKQoJCQlwcmltZXMucHVzaF9iYWNrKHApOwp9CmludCBtYWluKCkgewoKCXByaW1lcy5wdXNoX2JhY2soMik7CglTaWV2ZU9mRXJhdG9zdGhlbmVzKE1BWGludCk7CgkvLwlmb3IgKGF1dG8geCA6IHByaW1lcykgY291dCA8PCB4IDw8ICJcbiI7Cgljb3V0IDw8IHByaW1lcy5zaXplKCkgPDwgIlxuIjsKCS8qZm9yIChpbnQgaSA9IDA7IGkgPCBwcmltZXMuc2l6ZSgpIC0gMTsgaSsrKSB7CgkJZm9yIChpbnQgaiA9IGkgKyAxOyBqIDwgcHJpbWVzLnNpemUoKTsgaisrKSBwcmVQcmltZXMucHVzaF9iYWNrKHByaW1lc1tpXSAqIHByaW1lc1tqXSk7Cgl9Cglmb3IgKGF1dG8geCA6IHByaW1lcykgcHJlUHJpbWVzLnB1c2hfYmFjayh4KngqeCk7Cglzb3J0KHByZVByaW1lcy5iZWdpbigpLCBwcmVQcmltZXMuZW5kKCkpOyovCgkvKmludCBuOwoJY2luID4+IG47Cgljb3V0IDw8IHByZVByaW1lc1tuIC0gMV0gPDwgIlxuIjsqLwp9