


'''simple docstring'''



import math


def    lowerCamelCase__   ( A     :    int  ):




						'''simple docstring'''






						UpperCAmelCase         =			[True] * n
						UpperCAmelCase         =			False
						UpperCAmelCase         =			False
						UpperCAmelCase         =			True

						for i in range(3   ,     int(n**0.5 + 1  )   ,     2  ):
												UpperCAmelCase         =			i * 2
												while index < n:
																		UpperCAmelCase         =			False
																		UpperCAmelCase         =			index + i

						UpperCAmelCase         =			[2]

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

						return primes


def    lowerCamelCase__   ( A     :    int = 99_99_66_66_33_33  ):




						'''simple docstring'''






						UpperCAmelCase         =			math.floor(math.sqrt(A  )  ) + 1_00
						UpperCAmelCase         =			prime_sieve(A  )

						UpperCAmelCase         =			0
						UpperCAmelCase         =			0
						UpperCAmelCase         =			primes[prime_index]

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

												UpperCAmelCase         =			last_prime**2
												UpperCAmelCase         =			next_prime**2

												# Get numbers divisible by lps(current)
												UpperCAmelCase         =			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         =			upper_bound - next_prime
												while current > lower_bound:
																		matches_sum += current
																		current -= next_prime

												# Remove the numbers divisible by both ups and lps
												UpperCAmelCase         =			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         =			next_prime
												prime_index += 1

						return matches_sum


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









'''simple docstring'''



import unittest

from transformers import is_torch_available
from transformers.testing_utils import require_torch


if is_torch_available():
	import torch

	from transformers.generation import DisjunctiveConstraint






@require_torch
class  UpperCamelCase__(     unittest.TestCase ):




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

										"""simple docstring"""




										UpperCAmelCase         =			[[1, 2, 4], [1, 2, 3, 4]]
										UpperCAmelCase         =			DisjunctiveConstraint(lowerCAmelCase   )
										self.assertTrue(isinstance(dc.token_ids   ,					lowerCAmelCase   )   )

										with self.assertRaises(lowerCAmelCase   ):
																DisjunctiveConstraint(torch.LongTensor([[1, 2, 4], [1, 2, 3]]   )   )

										with self.assertRaises(lowerCAmelCase   ):
																DisjunctiveConstraint([torch.LongTensor([1, 2, 4]   ), torch.LongTensor([1, 2, 3, 4, 5]   )]   )




				def   a__(	self    :				Union[str, Any]   )->  str:

										"""simple docstring"""




										UpperCAmelCase         =			[[1, 2], [1, 2, 3, 4]]

										with self.assertRaises(lowerCAmelCase   ):
																DisjunctiveConstraint(lowerCAmelCase   )  # fails here




				def   a__(	self    :				Any   )->  Optional[int]:

										"""simple docstring"""




										UpperCAmelCase         =			[[1, 2, 3], [1, 2, 4]]

										UpperCAmelCase         =			DisjunctiveConstraint(lowerCAmelCase   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(1   )
										UpperCAmelCase         =			stepped is True and completed is False and reset is False
										self.assertTrue(lowerCAmelCase   )
										self.assertTrue(not dc.completed   )
										self.assertTrue(dc.current_seq == [1]   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(2   )
										UpperCAmelCase         =			stepped is True and completed is False and reset is False
										self.assertTrue(lowerCAmelCase   )
										self.assertTrue(not dc.completed   )
										self.assertTrue(dc.current_seq == [1, 2]   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(3   )
										UpperCAmelCase         =			stepped is True and completed is True and reset is False
										self.assertTrue(lowerCAmelCase   )
										self.assertTrue(dc.completed   )  # Completed!
										self.assertTrue(dc.current_seq == [1, 2, 3]   )





				def   a__(	self    :				int   )->  Dict:

										"""simple docstring"""




										UpperCAmelCase         =			[[1, 2, 3], [1, 2, 4, 5], [1, 2, 5]]

										UpperCAmelCase         =			DisjunctiveConstraint(lowerCAmelCase   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(1   )
										self.assertTrue(not dc.completed   )
										self.assertTrue(dc.current_seq == [1]   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(2   )
										self.assertTrue(not dc.completed   )
										self.assertTrue(dc.current_seq == [1, 2]   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(4   )
										self.assertTrue(not dc.completed   )
										self.assertTrue(dc.current_seq == [1, 2, 4]   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(5   )
										self.assertTrue(dc.completed   )  # Completed!
										self.assertTrue(dc.current_seq == [1, 2, 4, 5]   )

										dc.reset()

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(1   )
										self.assertTrue(not dc.completed   )
										self.assertTrue(dc.remaining() == 3   )
										self.assertTrue(dc.current_seq == [1]   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(2   )
										self.assertTrue(not dc.completed   )
										self.assertTrue(dc.remaining() == 2   )
										self.assertTrue(dc.current_seq == [1, 2]   )

										UpperCAmelCase       ,       UpperCAmelCase       ,       UpperCAmelCase         =			dc.update(5   )
										self.assertTrue(dc.completed   )  # Completed!
										self.assertTrue(dc.remaining() == 0   )
										self.assertTrue(dc.current_seq == [1, 2, 5]   )





