#include <bits/stdc++.h>
using namespace std;
long long int power(long long int b, long long int e, long long int m) {
  if (e == 0) return 1;
  if (e % 2)
    return ((b % m) * power(((b % m) * (b % m)) % m, (e - 1) / 2, m)) % m;
  else
    return power((b % m) * (b % m), e / 2, m) % m;
}
long long int ncr(long long int n, long long int r) {
  long long int f1 = 1;
  for (long long int i = 1; i <= n; i++) {
    f1 = (f1 % 1000000007 * (i) % 1000000007) % 1000000007;
  }
  long long int f2 = 1;
  for (long long int i = 1; i <= r; i++) {
    f2 = (f2 % 1000000007 * (i) % 1000000007) % 1000000007;
  }
  long long int f3 = 1;
  for (long long int i = 1; i <= n - r; i++) {
    f3 = (f3 % 1000000007 * i % 1000000007) % 1000000007;
  }
  long long int k =
      (f1 % 1000000007 * power(f2, 1000000007 - 2, 1000000007) % 1000000007 *
       power(f3, 1000000007 - 2, 1000000007) % 1000000007) %
      1000000007;
  return k;
}
void dpv(vector<long long int> v) {
  for (long long int i = 0; i < v.size(); i++) {
    cout << v[i] << " ";
  }
  cout << '\n';
}
void dpv(vector<pair<long long int, long long int> > v) {
  for (long long int i = 0; i < v.size(); i++) {
    cout << v[i].first << " " << v[i].second << '\n';
  }
}
void dpv(set<long long int> v) {
  for (auto i : v) {
    cout << i << " ";
  }
  cout << '\n';
}
long long int Logn(long long int n, long long int k) {
  return (n > k - 1) ? 1 + Logn(n / k, k) : 0;
}
long long int max(long long int a, long long int b) {
  if (a > b) {
    return a;
  } else {
    return b;
  }
}
bool sortbysecdec(const pair<long long int, long long int> &a,
                  const pair<long long int, long long int> &b) {
  return (a.second < b.second);
}
long long int min(long long int a, long long int b) {
  if (a > b) {
    return b;
  } else {
    return a;
  }
}
bool prime[3000];
void Seive() {
  memset(prime, true, sizeof(prime));
  for (long long int i = 2; i <= 3000; i++) {
    if (prime[i]) {
      for (long long int j = 2 * i; j <= 3000; j += i) {
        prime[j] = false;
      }
    }
  }
}
long long int dp[3005];
void DP() {
  Seive();
  memset(dp, 0, sizeof(dp));
  dp[6] = 1;
  for (long long int i = 7; i <= 3000; i++) {
    long long int c = 0;
    set<long long int> s;
    for (long long int k = 2; k <= sqrt(i); k++) {
      if (i % k == 0) {
        if (k == i / k) {
          if (prime[k]) {
            c++;
          }
        } else {
          if (prime[k]) {
            c++;
          }
          if (prime[i / k]) {
            c++;
          }
        }
      }
    }
    if (c == 2) {
      dp[i] = dp[i - 1] + 1;
    } else {
      dp[i] = dp[i - 1];
    }
  }
}
void oblivious() {
  DP();
  long long int n;
  cin >> n;
  cout << dp[n] << '\n';
}
signed main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long int t = 1;
  while (t--) {
    oblivious();
  }
  return 0;
}
