
import os
from shutil import copyfile
from typing import List, Optional, Tuple

from ...tokenization_utils import AddedToken
from ...tokenization_utils_fast import PreTrainedTokenizerFast
from ...utils import is_sentencepiece_available, logging


if is_sentencepiece_available():
						from .tokenization_albert import AlbertTokenizer
else:
						__a         =   None

__a         =   logging.get_logger(__name__)
__a         =   {'vocab_file': 'spiece.model', 'tokenizer_file': 'tokenizer.json'}

__a         =   {
    'vocab_file': {
        'albert-base-v1': 'https://huggingface.co/albert-base-v1/resolve/main/spiece.model',
        'albert-large-v1': 'https://huggingface.co/albert-large-v1/resolve/main/spiece.model',
        'albert-xlarge-v1': 'https://huggingface.co/albert-xlarge-v1/resolve/main/spiece.model',
        'albert-xxlarge-v1': 'https://huggingface.co/albert-xxlarge-v1/resolve/main/spiece.model',
        'albert-base-v2': 'https://huggingface.co/albert-base-v2/resolve/main/spiece.model',
        'albert-large-v2': 'https://huggingface.co/albert-large-v2/resolve/main/spiece.model',
        'albert-xlarge-v2': 'https://huggingface.co/albert-xlarge-v2/resolve/main/spiece.model',
        'albert-xxlarge-v2': 'https://huggingface.co/albert-xxlarge-v2/resolve/main/spiece.model',
    },
    'tokenizer_file': {
        'albert-base-v1': 'https://huggingface.co/albert-base-v1/resolve/main/tokenizer.json',
        'albert-large-v1': 'https://huggingface.co/albert-large-v1/resolve/main/tokenizer.json',
        'albert-xlarge-v1': 'https://huggingface.co/albert-xlarge-v1/resolve/main/tokenizer.json',
        'albert-xxlarge-v1': 'https://huggingface.co/albert-xxlarge-v1/resolve/main/tokenizer.json',
        'albert-base-v2': 'https://huggingface.co/albert-base-v2/resolve/main/tokenizer.json',
        'albert-large-v2': 'https://huggingface.co/albert-large-v2/resolve/main/tokenizer.json',
        'albert-xlarge-v2': 'https://huggingface.co/albert-xlarge-v2/resolve/main/tokenizer.json',
        'albert-xxlarge-v2': 'https://huggingface.co/albert-xxlarge-v2/resolve/main/tokenizer.json',
    },
}

__a         =   {
    'albert-base-v1': 5_1_2,
    'albert-large-v1': 5_1_2,
    'albert-xlarge-v1': 5_1_2,
    'albert-xxlarge-v1': 5_1_2,
    'albert-base-v2': 5_1_2,
    'albert-large-v2': 5_1_2,
    'albert-xlarge-v2': 5_1_2,
    'albert-xxlarge-v2': 5_1_2,
}

__a         =   '▁'
class 					lowercase__(							UpperCAmelCase				):



	"""simple docstring"""




	a     :Optional[Any]       	=      VOCAB_FILES_NAMES
	a     :Tuple       	=      PRETRAINED_VOCAB_FILES_MAP
	a     :Dict       	=      PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES
	a     :Union[str, Any]       	=      AlbertTokenizer
	def __init__(			self    :     Optional[int]			,				SCREAMING_SNAKE_CASE_    :     Any=None			,				SCREAMING_SNAKE_CASE_    :     List[Any]=None			,				SCREAMING_SNAKE_CASE_    :     List[Any]=True			,				SCREAMING_SNAKE_CASE_    :     Any=True			,				SCREAMING_SNAKE_CASE_    :     Union[str, Any]=False			,				SCREAMING_SNAKE_CASE_    :     List[str]="[CLS]"			,				SCREAMING_SNAKE_CASE_    :     Any="[SEP]"			,				SCREAMING_SNAKE_CASE_    :     str="<unk>"			,				SCREAMING_SNAKE_CASE_    :     Optional[int]="[SEP]"			,				SCREAMING_SNAKE_CASE_    :     str="<pad>"			,				SCREAMING_SNAKE_CASE_    :     Optional[int]="[CLS]"			,				SCREAMING_SNAKE_CASE_    :     Dict="[MASK]"			,				**SCREAMING_SNAKE_CASE_    :     int			,				)			->	Tuple:
					# Mask token behave like a normal word, i.e. include the space before it and
					# is included in the raw text, there should be a match in a non-normalized sentence.
					lowercase_	    =   (
					    AddedToken(SCREAMING_SNAKE_CASE_			,				lstrip=SCREAMING_SNAKE_CASE_			,				rstrip=SCREAMING_SNAKE_CASE_			,				normalized=SCREAMING_SNAKE_CASE_			)
					    if isinstance(SCREAMING_SNAKE_CASE_			,				SCREAMING_SNAKE_CASE_			)
					    else mask_token
					)

					super().__init__(
					    SCREAMING_SNAKE_CASE_			,				tokenizer_file=SCREAMING_SNAKE_CASE_			,				do_lower_case=SCREAMING_SNAKE_CASE_			,				remove_space=SCREAMING_SNAKE_CASE_			,				keep_accents=SCREAMING_SNAKE_CASE_			,				bos_token=SCREAMING_SNAKE_CASE_			,				eos_token=SCREAMING_SNAKE_CASE_			,				unk_token=SCREAMING_SNAKE_CASE_			,				sep_token=SCREAMING_SNAKE_CASE_			,				pad_token=SCREAMING_SNAKE_CASE_			,				cls_token=SCREAMING_SNAKE_CASE_			,				mask_token=SCREAMING_SNAKE_CASE_			,				**SCREAMING_SNAKE_CASE_			,				)

					lowercase_	    =   do_lower_case
					lowercase_	    =   remove_space
					lowercase_	    =   keep_accents
					lowercase_	    =   vocab_file
					lowercase_	    =   False if not self.vocab_file else True
	def 		_lowercase    (			self    :     Any			,				SCREAMING_SNAKE_CASE_    :     List[int]			,				SCREAMING_SNAKE_CASE_    :     Optional[List[int]] = None			)			->	List[int]:
					lowercase_	    =   [self.sep_token_id]
					lowercase_	    =   [self.cls_token_id]
					if token_ids_a is None:
									return cls + token_ids_a + sep
					return cls + token_ids_a + sep + token_ids_a + sep
	def 		_lowercase    (			self    :     Optional[Any]			,				SCREAMING_SNAKE_CASE_    :     List[int]			,				SCREAMING_SNAKE_CASE_    :     Optional[List[int]] = None			)			->	List[int]:
					lowercase_	    =   [self.sep_token_id]
					lowercase_	    =   [self.cls_token_id]

					if token_ids_a is None:
									return len(cls + token_ids_a + sep			) * [0]
					return len(cls + token_ids_a + sep			) * [0] + len(token_ids_a + sep			) * [1]




	def 		_lowercase    (			self    :     Union[str, Any]			,				SCREAMING_SNAKE_CASE_    :     str			,				SCREAMING_SNAKE_CASE_    :     Optional[str] = None			)			->	Tuple[str]:
					if not self.can_save_slow_tokenizer:
									raise ValueError(
									    '''Your fast tokenizer does not have the necessary information to save the vocabulary for a slow '''
									    '''tokenizer.'''			)

					if not os.path.isdir(SCREAMING_SNAKE_CASE_			):
									logger.error(f'''Vocabulary path ({save_directory}) should be a directory'''			)
									return
					lowercase_	    =   os.path.join(
					    SCREAMING_SNAKE_CASE_			,				(filename_prefix + '''-''' if filename_prefix else '''''') + VOCAB_FILES_NAMES['''vocab_file''']			)

					if os.path.abspath(self.vocab_file			) != os.path.abspath(SCREAMING_SNAKE_CASE_			):
									copyfile(self.vocab_file			,				SCREAMING_SNAKE_CASE_			)

					return (out_vocab_file,)











"""simple docstring"""





from __future__ import annotations

import math
def 					__A  (_SCREAMING_SNAKE_CASE     )   ->bool:





  """simple docstring"""


  if 1 < number < 4:
    # 2 and 3 are primes
    return True
  elif number < 2 or number % 2 == 0 or number % 3 == 0:
    # Negatives, 0, 1, all even numbers, all multiples of 3 are not primes
    return False

  # All primes number are in format of 6k +/- 1
  for i in range(5	,  int(math.sqrt(_SCREAMING_SNAKE_CASE     ) + 1     )	,  6     ):
    if number % i == 0 or number % (i + 2) == 0:
      return False
  return True


__A											=						[num for num in range(3, 10_0001, 2) if not is_prime(num)]
def 					__A  (_SCREAMING_SNAKE_CASE     )   ->list[int]:





  """simple docstring"""


  if not isinstance(_SCREAMING_SNAKE_CASE	,  _SCREAMING_SNAKE_CASE     ):
    raise ValueError('n must be an integer'     )
  if n <= 0:
    raise ValueError('n must be >= 0'     )

  lowerCAmelCase__     :Tuple											=				[]
  for num in range(len(_SCREAMING_SNAKE_CASE     )     ):
    lowerCAmelCase__     :int											=				0
    while 2 * i * i <= odd_composites[num]:
      lowerCAmelCase__     :int											=				odd_composites[num] - 2 * i * i
      if is_prime(_SCREAMING_SNAKE_CASE     ):
        break
      i += 1
    else:
      list_nums.append(odd_composites[num]     )
      if len(_SCREAMING_SNAKE_CASE     ) == n:
        return list_nums

  return []
def 					__A  ()   ->int:





  """simple docstring"""


  return compute_nums(1     )[0]


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