import math





def      lowerCAmelCase_       ( __lowerCAmelCase  )->     list:






      '''simple docstring'''





      UpperCAmelCase			:       str			     =[True] * n
      UpperCAmelCase			:       Optional[int]			     =False
      UpperCAmelCase			:       Any			     =False
      UpperCAmelCase			:       Optional[Any]			     =True

      for i in range(3						,    int(n**0.5 + 1  )						,    2  ):
            UpperCAmelCase			:       Dict			     =i * 2
            while index < n:
                  UpperCAmelCase			:       Union[str, Any]			     =False
                  UpperCAmelCase			:       List[str]			     =index + i

      UpperCAmelCase			:       Tuple			     =[2]

      for i in range(3						,    __lowerCAmelCase						,    2  ):
            if is_prime[i]:
                  primes.append(__lowerCAmelCase  )

      return primes





def      lowerCAmelCase_       ( __lowerCAmelCase = 99_99_66_66_33_33  )->     int:






      '''simple docstring'''





      UpperCAmelCase			:       Optional[Any]			     =math.floor(math.sqrt(__lowerCAmelCase  )  ) + 1_00
      UpperCAmelCase			:       str			     =prime_sieve(__lowerCAmelCase  )

      UpperCAmelCase			:       Any			     =0
      UpperCAmelCase			:       List[Any]			     =0
      UpperCAmelCase			:       Optional[Any]			     =primes[prime_index]

      while (last_prime**2) <= limit:
            UpperCAmelCase			:       List[str]			     =primes[prime_index + 1]

            UpperCAmelCase			:       Dict			     =last_prime**2
            UpperCAmelCase			:       int			     =next_prime**2

            # Get numbers divisible by lps(current)
            UpperCAmelCase			:       int			     =lower_bound + last_prime
            while upper_bound > current <= limit:
                  matches_sum += current
                  current += last_prime

            # Reset the upper_bound
            while (upper_bound - next_prime) > limit:
                  upper_bound -= next_prime

            # Add the numbers divisible by ups(current)
            UpperCAmelCase			:       Dict			     =upper_bound - next_prime
            while current > lower_bound:
                  matches_sum += current
                  current -= next_prime

            # Remove the numbers divisible by both ups and lps
            UpperCAmelCase			:       Optional[Any]			     =0
            while upper_bound > current <= limit:
                  if current <= lower_bound:
                        # Increment the current number
                        current += last_prime * next_prime
                        continue

                  if current > limit:
                        break

                  # Remove twice since it was added by both ups and lps
                  matches_sum -= current * 2

                  # Increment the current number
                  current += last_prime * next_prime

            # Setup for next pair
            UpperCAmelCase			:       Optional[Any]			     =next_prime
            prime_index += 1

      return matches_sum


if __name__ == "__main__":
     print(solution())








from tempfile import TemporaryDirectory
from unittest import TestCase
from unittest.mock import MagicMock, patch

from transformers import AutoModel, TFAutoModel
from transformers.onnx import FeaturesManager
from transformers.testing_utils import SMALL_MODEL_IDENTIFIER, require_tf, require_torch






@require_torch
@require_tf
class 		lowercase_					(	lowercase   ):






      '''simple docstring'''




      def       __lowerCAmelCase					(      self      :						str  )    ->int:




       """simple docstring"""


       a		  =      SMALL_MODEL_IDENTIFIER
       a		  =      '''pt'''
       a		  =      '''tf'''







      def       __lowerCAmelCase					(      self      :						Optional[Any] ,					__UpperCAmelCase      :						str  )    ->Union[str, Any]:




       """simple docstring"""


       a		  =      AutoModel.from_pretrained(self.test_model  )
       model_pt.save_pretrained(__UpperCAmelCase  )







      def       __lowerCAmelCase					(      self      :						Any ,					__UpperCAmelCase      :						Union[str, Any]  )    ->List[str]:




       """simple docstring"""


       a		  =      TFAutoModel.from_pretrained(self.test_model ,					from_pt=__UpperCAmelCase  )
       model_tf.save_pretrained(__UpperCAmelCase  )







      def       __lowerCAmelCase					(      self      :						Any  )    ->int:




       """simple docstring"""


       a		  =      '''mock_framework'''

       # Framework provided - return whatever the user provides
       a		  =      FeaturesManager.determine_framework(self.test_model ,					__UpperCAmelCase  )
       self.assertEqual(__UpperCAmelCase ,					__UpperCAmelCase  )

       # Local checkpoint and framework provided - return provided framework
       # PyTorch checkpoint
       with TemporaryDirectory() as local_pt_ckpt:
        self._setup_pt_ckpt(__UpperCAmelCase  )
        a		  =      FeaturesManager.determine_framework(__UpperCAmelCase ,					__UpperCAmelCase  )
        self.assertEqual(__UpperCAmelCase ,					__UpperCAmelCase  )

       # TensorFlow checkpoint
       with TemporaryDirectory() as local_tf_ckpt:
        self._setup_tf_ckpt(__UpperCAmelCase  )
        a		  =      FeaturesManager.determine_framework(__UpperCAmelCase ,					__UpperCAmelCase  )
        self.assertEqual(__UpperCAmelCase ,					__UpperCAmelCase  )







      def       __lowerCAmelCase					(      self      :						str  )    ->int:




       """simple docstring"""


       with TemporaryDirectory() as local_pt_ckpt:
        self._setup_pt_ckpt(__UpperCAmelCase  )
        a		  =      FeaturesManager.determine_framework(__UpperCAmelCase  )
        self.assertEqual(__UpperCAmelCase ,					self.framework_pt  )

       # TensorFlow checkpoint
       with TemporaryDirectory() as local_tf_ckpt:
        self._setup_tf_ckpt(__UpperCAmelCase  )
        a		  =      FeaturesManager.determine_framework(__UpperCAmelCase  )
        self.assertEqual(__UpperCAmelCase ,					self.framework_tf  )

       # Invalid local checkpoint
       with TemporaryDirectory() as local_invalid_ckpt:
        with self.assertRaises(__UpperCAmelCase  ):
         a		  =      FeaturesManager.determine_framework(__UpperCAmelCase  )







      def       __lowerCAmelCase					(      self      :						Optional[int]  )    ->List[str]:




       """simple docstring"""


       a		  =      MagicMock(return_value=__UpperCAmelCase  )
       with patch('''transformers.onnx.features.is_tf_available''' ,					__UpperCAmelCase  ):
        a		  =      FeaturesManager.determine_framework(self.test_model  )
        self.assertEqual(__UpperCAmelCase ,					self.framework_pt  )

       # PyTorch not in environment -> use TensorFlow
       a		  =      MagicMock(return_value=__UpperCAmelCase  )
       with patch('''transformers.onnx.features.is_torch_available''' ,					__UpperCAmelCase  ):
        a		  =      FeaturesManager.determine_framework(self.test_model  )
        self.assertEqual(__UpperCAmelCase ,					self.framework_tf  )

       # Both in environment -> use PyTorch
       a		  =      MagicMock(return_value=__UpperCAmelCase  )
       a		  =      MagicMock(return_value=__UpperCAmelCase  )
       with patch('''transformers.onnx.features.is_tf_available''' ,					__UpperCAmelCase  ), patch(
           '''transformers.onnx.features.is_torch_available''' ,					__UpperCAmelCase  ):
        a		  =      FeaturesManager.determine_framework(self.test_model  )
        self.assertEqual(__UpperCAmelCase ,					self.framework_pt  )

       # Both not in environment -> raise error
       a		  =      MagicMock(return_value=__UpperCAmelCase  )
       a		  =      MagicMock(return_value=__UpperCAmelCase  )
       with patch('''transformers.onnx.features.is_tf_available''' ,					__UpperCAmelCase  ), patch(
           '''transformers.onnx.features.is_torch_available''' ,					__UpperCAmelCase  ):
        with self.assertRaises(__UpperCAmelCase  ):
         a		  =      FeaturesManager.determine_framework(self.test_model  )


