



'''simple docstring'''

import enum
import inspect
import warnings
from functools import wraps
from typing import Callable, Optional

from .logging import get_logger


_A					:     Dict      =set()
_A					:     List[str]      =get_logger(__name__)







def     __UpperCamelCase					(				_lowercase = None       )			->      Optional[Any]:

	def decorator(_lowercase       ):
		global _emitted_deprecation_warnings

		if inspect.isclass(_lowercase       ):
			_lowercase       :							Union[str, Any]  	=		deprecated_class_or_function.__init__
			_lowercase       :							Union[str, Any]  	=		deprecated_class_or_function.__name__
		else:
			_lowercase       :							List[str]  	=		deprecated_class_or_function
			_lowercase       :							Dict  	=		deprecated_function.__name__
			# Support deprecating __init__ class method: class name instead
			_lowercase       :							Tuple  	=		name if name != '__init__' else deprecated_function.__qualname__.split('.'       )[-2]

		_lowercase       :							int  	=		(
		    f'''{name} is deprecated and will be removed in the next major version of datasets.''' + f''' {help_message}'''
		    if help_message
		    else ''
		)

		@wraps(_lowercase       )
		def wrapper(*_lowercase,					**_lowercase       ):
			_lowercase       :							List[str]  	=		hash(_lowercase       )
			if func_hash not in _emitted_deprecation_warnings:
				warnings.warn(_lowercase,					category=_lowercase,					stacklevel=2       )
				_emitted_deprecation_warnings.add(_lowercase       )
			return deprecated_function(*_lowercase,					**_lowercase       )

		_lowercase       :							Optional[Any]  	=		'deprecated'

		if inspect.isclass(_lowercase       ):
			_lowercase       :							Tuple  	=		wrapper
			return deprecated_class_or_function
		else:
			return wrapper

	return decorator



class 		lowerCamelCase__   (    enum.EnumMeta  ):




					'''simple docstring'''



					def __getattribute__(	cls					:						Optional[int]  ,	UpperCamelCase_					:						int       )	->							List[Any]:



						'''simple docstring'''





						_lowercase       :							List[str]  	=		super().__getattribute__(UpperCamelCase_       )
						if isinstance(UpperCamelCase_  ,	enum.Enum       ) and obj._on_access:
							obj._on_access()
						return obj




					def __getitem__(	cls					:						int  ,	UpperCamelCase_					:						List[Any]       )	->							str:



						'''simple docstring'''





						_lowercase       :							Any  	=		super().__getitem__(UpperCamelCase_       )
						if member._on_access:
							member._on_access()
						return member




					def __call__(	cls					:						int  ,	UpperCamelCase_					:						Tuple  ,	UpperCamelCase_					:						Optional[Any]=None  ,	*, UpperCamelCase_					:						Tuple=None  ,	UpperCamelCase_					:						Optional[Any]=None  ,	UpperCamelCase_					:						Union[str, Any]=None  ,	UpperCamelCase_					:						Any=1       )	->							List[str]:



						'''simple docstring'''





						_lowercase       :							List[Any]  	=		super().__call__(UpperCamelCase_  ,	UpperCamelCase_  ,	module=UpperCamelCase_  ,	qualname=UpperCamelCase_  ,	type=UpperCamelCase_  ,	start=UpperCamelCase_       )
						if isinstance(UpperCamelCase_  ,	enum.Enum       ) and obj._on_access:
							obj._on_access()
						return obj






class 		lowerCamelCase__   (    enum.Enum						, metaclass=A  ):




					'''simple docstring'''



					def __new__(	cls					:						Union[str, Any]  ,	UpperCamelCase_					:						Union[str, Any]       )	->							List[Any]:



						'''simple docstring'''





						_lowercase       :							Dict  	=		object.__new__(cls       )
						_lowercase       :							str  	=		value
						_lowercase       :							Optional[Any]  	=		member.deprecate
						return member




					@property
					def     __UpperCAmelCase  (	self					:						int       )	->							str:



						'''simple docstring'''





						return ""




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



						'''simple docstring'''





						_lowercase       :							List[Any]  	=		F''' {self.help_message}''' if self.help_message else ''
						warnings.warn(
						    F'''\'{self.__objclass__.__name__}\' is deprecated and will be removed in the next major version of datasets.'''
						    + help_message  ,	UpperCamelCase_  ,	stacklevel=3  ,	)





'''simple docstring'''

from __future__ import annotations

import sys







def     __UpperCamelCase					(				_lowercase       )			->      int:
	if n < 0:
		raise ValueError('Negative arguments are not supported'       )
	return _fib(_lowercase       )[0]







def     __UpperCamelCase					(				_lowercase       )			->      tuple[int, int]:
	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
	_lowercase	,     _lowercase       :							List[str]  	=		_fib(n // 2       )
	_lowercase       :							Dict  	=		a * (b * 2 - a)
	_lowercase       :							Union[str, Any]  	=		a * a + b * b
	return (d, c + d) if n % 2 else (c, d)


if __name__ == "__main__":
		_A					:     Optional[Any]      =int(sys.argv[1])
		print(F'''fibonacci({n}) is {fibonacci(n)}''')
