#include <bits/stdc++.h>
#define endl '\n'
using namespace std;
const int MAXN = 3e3;
const int INF = 1e9;
int n;
vector<int> primes;
bool is_prime[MAXN + 1];
int pre[MAXN + 1];
void sieve()
{
// init
for (int i = 1; i <= MAXN; i++) is_prime[i] = true;
is_prime[1] = false;
// sieve of Eratosthenes
for (int i = 2; i * i <= MAXN; i++)
{
if (is_prime[i])
{
for (int j = 2; j * i <= MAXN; j++)
{
is_prime[i * j] = false;
}
}
}
for (int i = 1; i <= MAXN; i++) if(is_prime[i]) primes.push_back(i);
}
bool is_almostNumber(int number)
{
set<int> s;
while (number != 1)
{
if (s.size() > 2) return false;
for (int i = primes.size() - 1; i >= 0; i--)
{
if (number % primes[i] == 0)
{
number /= primes[i];
s.insert(primes[i]);
break;
}
}
}
return (s.size() == 2);
}
void in()
{
cin >> n;
}
void out()
{
sieve();
int ans = 0;
for (int i = 1; i <= n; i++) if (is_almostNumber(i)) ans++;
cout << ans;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
in(); out();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZW5kbCAnXG4nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBNQVhOID0gM2UzOwpjb25zdCBpbnQgSU5GID0gMWU5OwppbnQgbjsKdmVjdG9yPGludD4gcHJpbWVzOwpib29sIGlzX3ByaW1lW01BWE4gKyAxXTsKaW50IHByZVtNQVhOICsgMV07CnZvaWQgc2lldmUoKQp7CiAgICAvLyBpbml0CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBNQVhOOyBpKyspIGlzX3ByaW1lW2ldID0gdHJ1ZTsKICAgIGlzX3ByaW1lWzFdID0gZmFsc2U7CiAgICAvLyBzaWV2ZSBvZiBFcmF0b3N0aGVuZXMKICAgIGZvciAoaW50IGkgPSAyOyBpICogaSA8PSBNQVhOOyBpKyspCiAgICB7CiAgICAgICAgaWYgKGlzX3ByaW1lW2ldKQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChpbnQgaiA9IDI7IGogKiBpIDw9IE1BWE47IGorKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaXNfcHJpbWVbaSAqIGpdID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBNQVhOOyBpKyspIGlmKGlzX3ByaW1lW2ldKSBwcmltZXMucHVzaF9iYWNrKGkpOwp9CmJvb2wgaXNfYWxtb3N0TnVtYmVyKGludCBudW1iZXIpCnsKICAgIHNldDxpbnQ+IHM7CiAgICB3aGlsZSAobnVtYmVyICE9IDEpCiAgICB7CiAgICAgICAgaWYgKHMuc2l6ZSgpID4gMikgcmV0dXJuIGZhbHNlOwogICAgICAgIGZvciAoaW50IGkgPSBwcmltZXMuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pCiAgICAgICAgewogICAgICAgICAgICBpZiAobnVtYmVyICUgcHJpbWVzW2ldID09IDApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG51bWJlciAvPSBwcmltZXNbaV07CiAgICAgICAgICAgICAgICBzLmluc2VydChwcmltZXNbaV0pOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gKHMuc2l6ZSgpID09IDIpOwp9CnZvaWQgaW4oKQp7CiAgICBjaW4gPj4gbjsKfQp2b2lkIG91dCgpCnsKICAgIHNpZXZlKCk7CiAgICBpbnQgYW5zID0gMDsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgaWYgKGlzX2FsbW9zdE51bWJlcihpKSkgYW5zKys7CiAgICBjb3V0IDw8IGFuczsKfQppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgaW4oKTsgb3V0KCk7Cn0=