'''simple docstring'''




from __future__ import annotations

import sys

def      UpperCamelCase_							( _UpperCAmelCase  :				int   )   ->   int:


							"""simple docstring"""







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

def      UpperCamelCase_							( _UpperCAmelCase  :				int   )   ->   tuple[int, int]:


							"""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
							_UpperCAmelCase					:  Tuple											=   _fib(n // 2   )
							_UpperCAmelCase					:  Dict											=   a * (b * 2 - a)
							_UpperCAmelCase					:  List[Any]											=   a * a + b * b
							return (d, c + d) if n % 2 else (c, d)


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


'''simple docstring'''




def      UpperCamelCase_							( _UpperCAmelCase  :				Optional[int]      ,     _UpperCAmelCase  :				List[Any]   )   ->   List[str]:


       """simple docstring"""







       if len(str(_UpperCAmelCase   )   ) == 1 or len(str(_UpperCAmelCase   )   ) == 1:
              return a * b

       _UpperCAmelCase					:  Any											=   max(len(str(_UpperCAmelCase   )   )      ,     len(str(_UpperCAmelCase   )   )   )
       _UpperCAmelCase					:  Any											=   ma // 2

       _UpperCAmelCase				,  _UpperCAmelCase					:  Union[str, Any]											=   divmod(_UpperCAmelCase      ,     10**ma   )
       _UpperCAmelCase				,  _UpperCAmelCase					:  int											=   divmod(_UpperCAmelCase      ,     10**ma   )

       _UpperCAmelCase					:  List[str]											=   karatsuba(_UpperCAmelCase      ,     _UpperCAmelCase   )
       _UpperCAmelCase					:  int											=   karatsuba((aa + aa)      ,     (ba + ba)   )
       _UpperCAmelCase					:  Any											=   karatsuba(_UpperCAmelCase      ,     _UpperCAmelCase   )

       return (z * 10 ** (2 * ma)) + ((y - z - x) * 10 ** (ma)) + (x)

def      UpperCamelCase_							( )   ->   List[str]:


       """simple docstring"""







       print(karatsuba(15_463      ,     23_489   )   )


if __name__ == "__main__":
  main()

