import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		sc.close();
		int ans = 0;
		for(int i=1;i<=num;i++){
			ans += calc(i);
		}
		System.out.println(ans);

	}

	private static int calc(int num) {
		// TODO 自動生成されたメソッド・スタブ
		TreeMap<Integer, Integer> map = prime(num);

		for(Iterator<Integer> it =  map.keySet().iterator();it.hasNext();){
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		}

		int totalPrime = 1;
		for(int value: map.values()){
			totalPrime *=(value+1);
		}
		if(totalPrime == 8){
			return 1;
		}else{
			return 0;
		}
	}

	public static TreeMap<Integer, Integer> prime(int num) {
		TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();


		for (int i = 2; i <= num; i++) {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		}
		return map;
	}

} import java.util.Iterator; Iterator java.util import java.util.Scanner; Scanner java.util import java.util.TreeMap; TreeMap java.util public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		sc.close();
		int ans = 0;
		for(int i=1;i<=num;i++){
			ans += calc(i);
		}
		System.out.println(ans);

	}

	private static int calc(int num) {
		// TODO 自動生成されたメソッド・スタブ
		TreeMap<Integer, Integer> map = prime(num);

		for(Iterator<Integer> it =  map.keySet().iterator();it.hasNext();){
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		}

		int totalPrime = 1;
		for(int value: map.values()){
			totalPrime *=(value+1);
		}
		if(totalPrime == 8){
			return 1;
		}else{
			return 0;
		}
	}

	public static TreeMap<Integer, Integer> prime(int num) {
		TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();


		for (int i = 2; i <= num; i++) {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		}
		return map;
	}

} Main public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		sc.close();
		int ans = 0;
		for(int i=1;i<=num;i++){
			ans += calc(i);
		}
		System.out.println(ans);

	} main {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		sc.close();
		int ans = 0;
		for(int i=1;i<=num;i++){
			ans += calc(i);
		}
		System.out.println(ans);

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int num = sc.nextInt(); num sc.nextInt() sc.nextInt sc sc.close() sc.close sc int ans = 0; ans 0 for(int i=1;i<=num;i++){
			ans += calc(i);
		} int i=1; int i=1; i 1 i<=num i num i++ i++ i {
			ans += calc(i);
		} {
			ans += calc(i);
		} ans += calc(i) ans calc(i) calc i System.out.println(ans) System.out.println System.out System System.out ans String[] args args private static int calc(int num) {
		// TODO 自動生成されたメソッド・スタブ
		TreeMap<Integer, Integer> map = prime(num);

		for(Iterator<Integer> it =  map.keySet().iterator();it.hasNext();){
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		}

		int totalPrime = 1;
		for(int value: map.values()){
			totalPrime *=(value+1);
		}
		if(totalPrime == 8){
			return 1;
		}else{
			return 0;
		}
	} calc {
		// TODO 自動生成されたメソッド・スタブ
		TreeMap<Integer, Integer> map = prime(num);

		for(Iterator<Integer> it =  map.keySet().iterator();it.hasNext();){
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		}

		int totalPrime = 1;
		for(int value: map.values()){
			totalPrime *=(value+1);
		}
		if(totalPrime == 8){
			return 1;
		}else{
			return 0;
		}
	} TreeMap<Integer, Integer> map = prime(num); map prime(num) prime num for(Iterator<Integer> it =  map.keySet().iterator();it.hasNext();){
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		} Iterator<Integer> it =  map.keySet().iterator(); Iterator<Integer> it =  map.keySet().iterator(); it map.keySet().iterator() map.keySet().iterator map.keySet() map.keySet map it.hasNext() it.hasNext it {
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		} {
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		} int key = it.next(); key it.next() it.next it if(key %2 == 0){
				return 0;
			} key %2 == 0 key %2 key 2 0 {
				return 0;
			} return 0; 0 int totalPrime = 1; totalPrime 1 for(int value: map.values()){
			totalPrime *=(value+1);
		} int value map.values() map.values map {
			totalPrime *=(value+1);
		} {
			totalPrime *=(value+1);
		} totalPrime *=(value+1) totalPrime (value+1) value 1 if(totalPrime == 8){
			return 1;
		}else{
			return 0;
		} totalPrime == 8 totalPrime 8 {
			return 1;
		} return 1; 1 {
			return 0;
		} return 0; 0 int num num public static TreeMap<Integer, Integer> prime(int num) {
		TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();


		for (int i = 2; i <= num; i++) {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		}
		return map;
	} prime {
		TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();


		for (int i = 2; i <= num; i++) {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		}
		return map;
	} TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>(); map new TreeMap<Integer, Integer>() for (int i = 2; i <= num; i++) {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		} int i = 2; int i = 2; i 2 i <= num i num i++ i++ i {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		} {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		} if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			} num % i == 0 num % i num i 0 {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			} if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				} map.containsKey(i) map.containsKey map i {
					map.put(i, map.get(i)+1);
				} map.put(i, map.get(i)+1) map.put map i map.get(i)+1 map.get(i) map.get map i 1 {
					map.put(i, 1);
				} map.put(i, 1) map.put map i 1 num /= i num i i = 1 i 1 return map; map int num num public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		sc.close();
		int ans = 0;
		for(int i=1;i<=num;i++){
			ans += calc(i);
		}
		System.out.println(ans);

	}

	private static int calc(int num) {
		// TODO 自動生成されたメソッド・スタブ
		TreeMap<Integer, Integer> map = prime(num);

		for(Iterator<Integer> it =  map.keySet().iterator();it.hasNext();){
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		}

		int totalPrime = 1;
		for(int value: map.values()){
			totalPrime *=(value+1);
		}
		if(totalPrime == 8){
			return 1;
		}else{
			return 0;
		}
	}

	public static TreeMap<Integer, Integer> prime(int num) {
		TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();


		for (int i = 2; i <= num; i++) {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		}
		return map;
	}

} public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		sc.close();
		int ans = 0;
		for(int i=1;i<=num;i++){
			ans += calc(i);
		}
		System.out.println(ans);

	}

	private static int calc(int num) {
		// TODO 自動生成されたメソッド・スタブ
		TreeMap<Integer, Integer> map = prime(num);

		for(Iterator<Integer> it =  map.keySet().iterator();it.hasNext();){
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		}

		int totalPrime = 1;
		for(int value: map.values()){
			totalPrime *=(value+1);
		}
		if(totalPrime == 8){
			return 1;
		}else{
			return 0;
		}
	}

	public static TreeMap<Integer, Integer> prime(int num) {
		TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();


		for (int i = 2; i <= num; i++) {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		}
		return map;
	}

} Main
import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int num = sc.nextInt();
		sc.close();
		int ans = 0;
		for(int i=1;i<=num;i++){
			ans += calc(i);
		}
		System.out.println(ans);

	}

	private static int calc(int num) {
		// TODO 自動生成されたメソッド・スタブ
		TreeMap<Integer, Integer> map = prime(num);

		for(Iterator<Integer> it =  map.keySet().iterator();it.hasNext();){
			int key = it.next();
			if(key %2 == 0){
				return 0;
			}
		}

		int totalPrime = 1;
		for(int value: map.values()){
			totalPrime *=(value+1);
		}
		if(totalPrime == 8){
			return 1;
		}else{
			return 0;
		}
	}

	public static TreeMap<Integer, Integer> prime(int num) {
		TreeMap<Integer, Integer> map = new TreeMap<Integer, Integer>();


		for (int i = 2; i <= num; i++) {

			if (num % i == 0) {
				if(map.containsKey(i)){
					map.put(i, map.get(i)+1);
				}else{
					map.put(i, 1);
				}
				num /= i;

				i = 1;

			}
		}
		return map;
	}

}