


'''simple docstring'''







from typing import TYPE_CHECKING

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


a__    :   str								=			{
    'configuration_dpr': ['DPR_PRETRAINED_CONFIG_ARCHIVE_MAP', 'DPRConfig'],
    'tokenization_dpr': [
        'DPRContextEncoderTokenizer',
        'DPRQuestionEncoderTokenizer',
        'DPRReaderOutput',
        'DPRReaderTokenizer',
    ],
}


try:
  if not is_tokenizers_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a__    :   List[Any]								=			[
      'DPRContextEncoderTokenizerFast',
      'DPRQuestionEncoderTokenizerFast',
      'DPRReaderTokenizerFast',
  ]

try:
  if not is_torch_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a__    :   str								=			[
      'DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
      'DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
      'DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST',
      'DPRContextEncoder',
      'DPRPretrainedContextEncoder',
      'DPRPreTrainedModel',
      'DPRPretrainedQuestionEncoder',
      'DPRPretrainedReader',
      'DPRQuestionEncoder',
      'DPRReader',
  ]

try:
  if not is_tf_available():
    raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
  pass
else:
  a__    :   List[Any]								=			[
      'TF_DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
      'TF_DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST',
      'TF_DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST',
      'TFDPRContextEncoder',
      'TFDPRPretrainedContextEncoder',
      'TFDPRPretrainedQuestionEncoder',
      'TFDPRPretrainedReader',
      'TFDPRQuestionEncoder',
      'TFDPRReader',
  ]


if TYPE_CHECKING:
  from .configuration_dpr import DPR_PRETRAINED_CONFIG_ARCHIVE_MAP, DPRConfig
  from .tokenization_dpr import (
      DPRContextEncoderTokenizer,
      DPRQuestionEncoderTokenizer,
      DPRReaderOutput,
      DPRReaderTokenizer,
  )

  try:
    if not is_tokenizers_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .tokenization_dpr_fast import (
        DPRContextEncoderTokenizerFast,
        DPRQuestionEncoderTokenizerFast,
        DPRReaderTokenizerFast,
    )

  try:
    if not is_torch_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_dpr import (
        DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
        DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
        DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST,
        DPRContextEncoder,
        DPRPretrainedContextEncoder,
        DPRPreTrainedModel,
        DPRPretrainedQuestionEncoder,
        DPRPretrainedReader,
        DPRQuestionEncoder,
        DPRReader,
    )

  try:
    if not is_tf_available():
      raise OptionalDependencyNotAvailable()
  except OptionalDependencyNotAvailable:
    pass
  else:
    from .modeling_tf_dpr import (
        TF_DPR_CONTEXT_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
        TF_DPR_QUESTION_ENCODER_PRETRAINED_MODEL_ARCHIVE_LIST,
        TF_DPR_READER_PRETRAINED_MODEL_ARCHIVE_LIST,
        TFDPRContextEncoder,
        TFDPRPretrainedContextEncoder,
        TFDPRPretrainedQuestionEncoder,
        TFDPRPretrainedReader,
        TFDPRQuestionEncoder,
        TFDPRReader,
    )

else:
  import sys

  a__    :   List[str]								=			_LazyModule(__name__, globals()['__file__'], _import_structure, module_spec=__spec__)










import math
from decimal import Decimal, getcontext




def 						UpperCAmelCase (    _lowerCamelCase = 400_0000     ):

			try:
						A				:       Any														=    int(_lowerCamelCase     )
			except (TypeError, ValueError):
						raise TypeError("Parameter n must be int or castable to int."     )
			if n <= 0:
						raise ValueError("Parameter n must be greater than or equal to one."     )
			A				:       int														=    100
			A				:       Tuple														=    (Decimal(5     ) ** Decimal(0.5     ) + 1) / Decimal(2     )

			A				:       str														=    (math.floor(math.log(n * (phi + 2)			,     _lowerCamelCase     ) - 1     ) // 3) * 3 + 2
			A				:       Optional[int]														=    Decimal(round(phi ** Decimal(index + 1     )     )     ) / (phi + 2)
			A				:       str														=    num // 2
			return int(_lowerCamelCase     )


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