def parse(inFile):
    return inFile.getInt()

def primes(N):
    P = range(N+1)
    p = 2
    while (p * p <= N):
        if P[p]:
            P[p*p::p] = [0] * (1 + (N / p) - p)
        p += 1
    P[1] = 0
    return [p for p in P if p]

P = primes(10 ** 6)
pows = [1]
for p in P:
    print p
    k = p * p
    while k <= 10 ** 12:
        pows.append(k)
        k = k * p
pows.sort()

def solve(N):
    if (N == 1): return 0
    return len([z for z in pows if z <= N])

if __name__ == "__main__":
    from GCJ import GCJ
    GCJ(parse, solve, "/Users/lpebody/gcj/2011_round2/", "c").run()

            
