import sys input = lambda :sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) ms = lambda: map(str, input().split()) mf = lambda: map(float, input().split()) li = lambda: list(mi()) def main(): N = ii() def sieve(x): isprime = [True] * (x + 1) if x >= 0: isprime[0] = False if x >= 1: isprime[1] = False for i in range(2, x + 1): if i * i > x: break if not isprime[i]: continue for j in range(i * i, x + 1, i): isprime[j] = False return isprime n = 1_000_000 prime = sieve(n) now = 1 ans = 0 for i in range(1, n + 1): if(prime[i]): if(now * i <= N): now *= i ans += 1 else: break print(ans) if __name__ == '__main__': main()