#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
const int MAXN = 3010;
long long n;
vector<long long> cont(MAXN, 0);
bitset<MAXN> isPrime;
void print(vector<long long> &v) {
  cout << v.size() << endl;
  for (int i = 0; i < v.size(); i++) {
    printf("%lld ", v[i]);
  }
  printf("\n");
}
void print(vector<pair<long long, long long> > &v) {
  cout << v.size() << endl;
  for (int i = 0; i < v.size(); i++) {
    printf("%lld %lld\n", v[i].first, v[i].second);
  }
}
void print(set<long long> s) {
  set<long long>::iterator itr;
  for (itr = s.begin(); itr != s.end(); ++itr) {
    cout << *itr << " ";
  }
  cout << endl;
}
void print(double d) { cout << fixed << setprecision(10) << d << endl; }
void from_file(void) {
  freopen("input.txt", "r", stdin);
  freopen("output.txt", "w", stdout);
}
void primeFactors() {
  isPrime[1] = 1;
  for (int i = 4; i < MAXN; i += 2) isPrime[i] = 1;
  for (int i = 3; i <= sqrt(MAXN); i += 2) {
    if (isPrime[i]) continue;
    for (int j = i * i; j < MAXN; j += i) isPrime[j] = 1;
  }
  for (int i = 2; i < MAXN; i++) {
    if (isPrime[i]) continue;
    for (int j = i; j < MAXN; j += i) cont[j]++;
  }
}
long long solve() {
  long long ans = 0;
  primeFactors();
  for (int i = 2; i <= n; i++) {
    if (cont[i] == 2) ans++;
  }
  return ans;
}
void run() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n;
  cout << solve() << endl;
}
int main() {
  run();
  return 0;
}
