


import math
from collections.abc import Generator






def 			__lowerCAmelCase       (SCREAMING_SNAKE_CASE   )->    Generator[int, None, None]:




      """simple docstring"""

      snake_case_			= (i for i in range(1   ,   (max_n + 1)   ))
      for i in (n for n in numbers if n > 1):
            for j in range(2   ,   SCREAMING_SNAKE_CASE   ):
                  if (i % j) == 0:
                        break
            else:
                  yield i






def 			__lowerCAmelCase       (SCREAMING_SNAKE_CASE   )->    Generator[int, None, None]:




      """simple docstring"""

      snake_case_			= (i for i in range(1   ,   (max_n + 1)   ))
      for i in (n for n in numbers if n > 1):
            # only need to check for factors up to sqrt(i)
            snake_case_			= int(math.sqrt(SCREAMING_SNAKE_CASE   )   ) + 1
            for j in range(2   ,   SCREAMING_SNAKE_CASE   ):
                  if (i % j) == 0:
                        break
            else:
                  yield i






def 			__lowerCAmelCase       (SCREAMING_SNAKE_CASE   )->    Generator[int, None, None]:




      """simple docstring"""

      snake_case_			= (i for i in range(1   ,   (max_n + 1)   ,   2   ))
      # It's useless to test even numbers as they will not be prime
      if max_n > 2:
            yield 2  # Because 2 will not be tested, it's necessary to yield it now
      for i in (n for n in numbers if n > 1):
            snake_case_			= int(math.sqrt(SCREAMING_SNAKE_CASE   )   ) + 1
            for j in range(3   ,   SCREAMING_SNAKE_CASE   ,   2   ):
                  # As we removed the even numbers, we don't need them now
                  if (i % j) == 0:
                        break
            else:
                  yield i






def 			__lowerCAmelCase       ()->    Optional[int]:




      """simple docstring"""

      from timeit import timeit

      snake_case_			= '''from __main__ import slow_primes, primes, fast_primes'''
      print(timeit('''slow_primes(1_000_000_000_000)'''   ,   setup=SCREAMING_SNAKE_CASE   ,   number=100_0000   )   )
      print(timeit('''primes(1_000_000_000_000)'''   ,   setup=SCREAMING_SNAKE_CASE   ,   number=100_0000   )   )
      print(timeit('''fast_primes(1_000_000_000_000)'''   ,   setup=SCREAMING_SNAKE_CASE   ,   number=100_0000   )   )


if __name__ == "__main__":
   UpperCAmelCase     =       int(input("""Calculate primes up to:\n>> """).strip())
   for ret in primes(number):
      print(ret)
   benchmark()



def 			__lowerCAmelCase       (SCREAMING_SNAKE_CASE = 1000   )->    int:




      """simple docstring"""

      snake_case_			= [0, 3, 3, 5, 4, 4, 3, 5, 5, 4, 3, 6, 6, 8, 8, 7, 7, 9, 8, 8]
      # number of letters in twenty, thirty, ..., ninety (0 for numbers less than
      # 20 due to inconsistency in teens)
      snake_case_			= [0, 0, 6, 6, 5, 5, 5, 7, 6, 6]

      snake_case_			= 0

      for i in range(1   ,   n + 1   ):
            if i < 1000:
                  if i >= 100:
                        # add number of letters for "n hundred"
                        count += ones_counts[i // 100] + 7

                        if i % 100 != 0:
                              # add number of letters for "and" if number is not multiple
                              # of 100
                              count += 3

                  if 0 < i % 100 < 20:
                        # add number of letters for one, two, three, ..., nineteen
                        # (could be combined with below if not for inconsistency in
                        # teens)
                        count += ones_counts[i % 100]
                  else:
                        # add number of letters for twenty, twenty one, ..., ninety
                        # nine
                        count += ones_counts[i % 10]
                        count += tens_counts[(i % 100 - i % 10) // 10]
            else:
                  count += ones_counts[i // 1000] + 8
      return count


if __name__ == "__main__":
   print(solution(int(input().strip())))