A number is called almost prime if it has exactly two distinct prime divisors. For example, numbers 6, 18, 24 are almost prime, while 4, 8, 9, 42 are not. Find the amount of almost prime numbers which are between 1 and n, inclusive.

Input

Input contains one integer number n (1 ≤ n ≤ 3000).

Output

Output the amount of almost prime numbers between 1 and n, inclusive.

Examples

Input

10


Output

2


Input

21


Output

8
#include <bits/stdc++.h>
using namespace std;
bitset<10000010> bs;
long long sieve_size;
vector<long long> prime;
int* freqArr(int* a, int n, int max = 0) {
  if (max == 0) {
    for (int i = 0; i < n; i++) {
      if (a[i] > max) {
        max = a[i];
      }
    }
  }
  int* b = new int[max]();
  for (int i = 0; i < n; i++) {
    b[a[i]]++;
  }
  return b;
}
int GCD(int a, int b) {
  if (b == 0) {
    return a;
  }
  return GCD(b, a % b);
}
int LCM(int a, int b) { return a * (b / GCD(a, b)); }
void sieve(long long upperbound) {
  sieve_size = upperbound + 1;
  bs.set();
  bs[0] = bs[1] = 0;
  for (long long i = 2; i <= sqrt(sieve_size); i++) {
    if (bs[i]) {
      for (long long j = i * i; j <= sieve_size; j += i) {
        bs[j] = 0;
      }
      prime.push_back(i);
    }
  }
}
bool isPrime(long long N) {
  if (N <= sieve_size) {
    return bs[N];
  }
  for (int i = 0; i < prime.size(); i++) {
    if (N % prime[i] == 0) {
      return false;
    }
  }
  return true;
}
bool primeFactors(long long N) {
  vector<long long> PFactors;
  long long prime_index = 0;
  long long PF = prime[prime_index];
  int count = 0;
  while (PF * PF < N) {
    if (N % PF == 0) {
      count++;
    }
    while (N % PF == 0) {
      N /= PF;
      PFactors.push_back(PF);
    }
    PF = prime[++prime_index];
  }
  if (N != 1) {
    PFactors.push_back(PF);
    count++;
  }
  if (count == 2) {
    return true;
  }
  return false;
}
int main() {
  sieve(3001);
  int count = 0;
  int n = 0;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    bool t = primeFactors(i);
    if (t) count++;
  }
  cout << count << endl;
}
