


from typing import TYPE_CHECKING

from ....utils import OptionalDependencyNotAvailable, _LazyModule, is_tokenizers_available, is_torch_available


lowerCamelCase		=						{
    '''configuration_retribert''': ['''RETRIBERT_PRETRAINED_CONFIG_ARCHIVE_MAP''', '''RetriBertConfig'''],
    '''tokenization_retribert''': ['''RetriBertTokenizer'''],
}

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

try:
		if not is_torch_available():
				raise OptionalDependencyNotAvailable()
except OptionalDependencyNotAvailable:
		pass
else:
		lowerCamelCase		=						[
		    '''RETRIBERT_PRETRAINED_MODEL_ARCHIVE_LIST''',
		    '''RetriBertModel''',
		    '''RetriBertPreTrainedModel''',
		]


if TYPE_CHECKING:
		from .configuration_retribert import RETRIBERT_PRETRAINED_CONFIG_ARCHIVE_MAP, RetriBertConfig
		from .tokenization_retribert import RetriBertTokenizer

		try:
				if not is_tokenizers_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .tokenization_retribert_fast import RetriBertTokenizerFast

		try:
				if not is_torch_available():
						raise OptionalDependencyNotAvailable()
		except OptionalDependencyNotAvailable:
				pass
		else:
				from .modeling_retribert import (
				    RETRIBERT_PRETRAINED_MODEL_ARCHIVE_LIST,
				    RetriBertModel,
				    RetriBertPreTrainedModel,
				)

else:
		import sys

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








from __future__ import annotations

import sys






def 	lowerCamelCase_       (			_a			):




		"""simple docstring"""






		if n < 0:
				raise ValueError('''Negative arguments are not supported'''			)
		return _fib(_a			)[0]






def 	lowerCamelCase_       (			_a			):




		"""simple docstring"""






		if n == 0:  # (F(0), F(1))
				return (0, 1)

		# F(2n) = F(n)[2F(n+1) − F(n)]
		# F(2n+1) = F(n+1)^2+F(n)^2
		lowerCAmelCase__	,      lowerCAmelCase__  :     Dict       	=   _fib(n // 2			)
		lowerCAmelCase__  :     Dict       	=   a * (b * 2 - a)
		lowerCAmelCase__  :     Union[str, Any]       	=   a * a + b * b
		return (d, c + d) if n % 2 else (c, d)


if __name__ == "__main__":
		lowerCamelCase		=						int(sys.argv[1])
		print(f'''fibonacci({n}) is {fibonacci(n)}''')




