

def _a				( SCREAMING_SNAKE_CASE	:    Dict					,      SCREAMING_SNAKE_CASE	:    Dict					,      SCREAMING_SNAKE_CASE	:    Optional[int]					,      SCREAMING_SNAKE_CASE	:    List[Any]	)					->					Tuple:

 """simple docstring"""






 if start == end:
  return start if lst[start] > item else start + 1
 if start > end:
  return start

 __lowerCAmelCase:     int     			=   (start + end) // 2
 if lst[mid] < item:
  return binary_search(SCREAMING_SNAKE_CASE					,      SCREAMING_SNAKE_CASE					,      mid + 1					,      SCREAMING_SNAKE_CASE	)
 elif lst[mid] > item:
  return binary_search(SCREAMING_SNAKE_CASE					,      SCREAMING_SNAKE_CASE					,      SCREAMING_SNAKE_CASE					,      mid - 1	)
 else:
  return mid







def _a				( SCREAMING_SNAKE_CASE	:    Union[str, Any]	)					->					Optional[int]:

 """simple docstring"""






 __lowerCAmelCase:     Any     			=   len(SCREAMING_SNAKE_CASE	)

 for index in range(1					,      SCREAMING_SNAKE_CASE	):
  __lowerCAmelCase:     Dict     			=   lst[index]
  __lowerCAmelCase:     Optional[Any]     			=   binary_search(SCREAMING_SNAKE_CASE					,      SCREAMING_SNAKE_CASE					,      0					,      index - 1	)
  __lowerCAmelCase:     Optional[int]     			=   lst[:pos] + [value] + lst[pos:index] + lst[index + 1 :]

 return lst







def _a				( SCREAMING_SNAKE_CASE	:    List[Any]					,      SCREAMING_SNAKE_CASE	:    Union[str, Any]	)					->					Optional[int]:

 """simple docstring"""






 if not left:
  return right

 if not right:
  return left

 if left[0] < right[0]:
  return [left[0], *merge(left[1:]					,      SCREAMING_SNAKE_CASE	)]

 return [right[0], *merge(SCREAMING_SNAKE_CASE					,      right[1:]	)]







def _a				( SCREAMING_SNAKE_CASE	:    Optional[Any]	)					->					Dict:

 """simple docstring"""






 __lowerCAmelCase:     str     			=   len(SCREAMING_SNAKE_CASE	)
 __lowerCAmelCase			,							__lowerCAmelCase:     List[str]     			=   [], []
 __lowerCAmelCase:     Dict     			=   [lst[0]]
 __lowerCAmelCase:     Any     			=   []
 __lowerCAmelCase:     Union[str, Any]     			=   1
 while i < length:
  if lst[i] < lst[i - 1]:
   runs.append(SCREAMING_SNAKE_CASE	)
   __lowerCAmelCase:     Union[str, Any]     			=   [lst[i]]
  else:
   new_run.append(lst[i]	)
  i += 1
 runs.append(SCREAMING_SNAKE_CASE	)

 for run in runs:
  sorted_runs.append(insertion_sort(SCREAMING_SNAKE_CASE	)	)
 for run in sorted_runs:
  __lowerCAmelCase:     Union[str, Any]     			=   merge(SCREAMING_SNAKE_CASE					,      SCREAMING_SNAKE_CASE	)

 return sorted_array







def _a				( )					->					Dict:

 """simple docstring"""






 __lowerCAmelCase:     Tuple     			=   [5, 9, 10, 3, -4, 5, 1_78, 92, 46, -18, 0, 7]
 __lowerCAmelCase:     Tuple     			=   tim_sort(SCREAMING_SNAKE_CASE	)
 print(SCREAMING_SNAKE_CASE	)


if __name__ == "__main__":
  main()








from typing import TYPE_CHECKING

from ...utils import (
    OptionalDependencyNotAvailable,
    _LazyModule,
    is_flax_available,
    is_keras_nlp_available,
    is_tensorflow_text_available,
    is_tf_available,
    is_tokenizers_available,
    is_torch_available,
)


_a	 =     {
    '''configuration_gpt2''': ['''GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''GPT2Config''', '''GPT2OnnxConfig'''],
    '''tokenization_gpt2''': ['''GPT2Tokenizer'''],
}

try:
  if not is_tokenizers_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _a	 =     ['''GPT2TokenizerFast''']

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _a	 =     [
      '''GPT2_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''GPT2DoubleHeadsModel''',
      '''GPT2ForQuestionAnswering''',
      '''GPT2ForSequenceClassification''',
      '''GPT2ForTokenClassification''',
      '''GPT2LMHeadModel''',
      '''GPT2Model''',
      '''GPT2PreTrainedModel''',
      '''load_tf_weights_in_gpt2''',
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _a	 =     [
      '''TF_GPT2_PRETRAINED_MODEL_ARCHIVE_LIST''',
      '''TFGPT2DoubleHeadsModel''',
      '''TFGPT2ForSequenceClassification''',
      '''TFGPT2LMHeadModel''',
      '''TFGPT2MainLayer''',
      '''TFGPT2Model''',
      '''TFGPT2PreTrainedModel''',
  ]

try:
  if not is_keras_nlp_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _a	 =     ['''TFGPT2Tokenizer''']

try:
  if not is_flax_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  _a	 =     ['''FlaxGPT2LMHeadModel''', '''FlaxGPT2Model''', '''FlaxGPT2PreTrainedModel''']

if TYPE_CHECKING:
  from .configuration_gpta import GPT2_PRETRAINED_CONFIG_ARCHIVE_MAP, GPTaConfig, GPTaOnnxConfig
  from .tokenization_gpta import GPTaTokenizer

  try:
    if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_gpta_fast import GPTaTokenizerFast

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_gpta import (
        GPT2_PRETRAINED_MODEL_ARCHIVE_LIST,
        GPTaDoubleHeadsModel,
        GPTaForQuestionAnswering,
        GPTaForSequenceClassification,
        GPTaForTokenClassification,
        GPTaLMHeadModel,
        GPTaModel,
        GPTaPreTrainedModel,
        load_tf_weights_in_gpta,
    )

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_gpta import (
        TF_GPT2_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFGPTaDoubleHeadsModel,
        TFGPTaForSequenceClassification,
        TFGPTaLMHeadModel,
        TFGPTaMainLayer,
        TFGPTaModel,
        TFGPTaPreTrainedModel,
    )

  try:
    if not is_keras_nlp_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_gpta_tf import TFGPTaTokenizer

  try:
    if not is_flax_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_flax_gpta import FlaxGPTaLMHeadModel, FlaxGPTaModel, FlaxGPTaPreTrainedModel

else:
  import sys

  _a	 =     _LazyModule(__name__, globals()['''__file__'''], _import_structure, module_spec=__spec__)





