from __future__ import annotations
def 		snake_case__	(		lowercase							,				lowercase							,				lowercase							,				lowercase					):  # noqa: E741
   while r - l > 1:
      lowerCAmelCase_:							str       =	(l + r) // 2
      if v[m] >= key:
         lowerCAmelCase_:							Any       =	m
      else:
         lowerCAmelCase_:							List[str]       =	m  # noqa: E741
   return r
def 		snake_case__	(		lowercase					):
   if len(lowercase					) == 0:
      return 0

   lowerCAmelCase_:							Optional[Any]       =	[0] * len(lowercase					)
   lowerCAmelCase_:							str       =	1

   lowerCAmelCase_:							List[str]       =	v[0]

   for i in range(1							,				len(lowercase					)					):
      if v[i] < tail[0]:
         lowerCAmelCase_:							str       =	v[i]
      elif v[i] > tail[length - 1]:
         lowerCAmelCase_:							List[Any]       =	v[i]
         length += 1
      else:
         lowerCAmelCase_:							Dict       =	v[i]

   return length


if __name__ == "__main__":
 import doctest

 doctest.testmod()
from math import isqrt
def 		snake_case__	(		lowercase					):
   lowerCAmelCase_:							List[str]       =	[True] * max_number
   for i in range(2							,				isqrt(max_number - 1					) + 1					):
      if is_prime[i]:
         for j in range(i**2							,				lowercase							,				lowercase					):
            lowerCAmelCase_:							Dict       =	False

   return [i for i in range(2							,				lowercase					) if is_prime[i]]
def 		snake_case__	(		lowercase = 10**8					):
   lowerCAmelCase_:							Union[str, Any]       =	calculate_prime_numbers(max_number // 2					)

   lowerCAmelCase_:							Tuple       =	0
   lowerCAmelCase_:							List[Any]       =	0
   lowerCAmelCase_:							Dict       =	len(lowercase					) - 1
   while left <= right:
      while prime_numbers[left] * prime_numbers[right] >= max_number:
         right -= 1
      semiprimes_count += right - left + 1
      left += 1

   return semiprimes_count


if __name__ == "__main__":
 print(f'''{solution() = }''')