

"""simple docstring"""




def 		_lowercase			(					lowercase__       ,     lowercase__						):
      __lowerCAmelCase :						int = []
      __lowerCAmelCase :						Union[str, Any] = len(_lowerCamelCase						)
      for i in range(_lowerCamelCase						):
            __lowerCAmelCase :						List[str] = []
            for j in range(_lowerCamelCase						):
                  __lowerCAmelCase :						Union[str, Any] = 0
                  for k in range(_lowerCamelCase						):
                        __lowerCAmelCase :						Any = val + matrix_a[i][k] * matrix_b[k][j]
                  list_a.append(_lowerCamelCase						)
            matrix_c.append(_lowerCamelCase						)
      return matrix_c







def 		_lowercase			(					lowercase__						):
      return [[int(row == column						) for column in range(_lowerCamelCase						)] for row in range(_lowerCamelCase						)]







def 		_lowercase			(					lowercase__						):
      if n <= 1:
            return n
      __lowerCAmelCase :						Tuple = identity(2						)
      __lowerCAmelCase :						Union[str, Any] = [[1, 1], [1, 0]]
      __lowerCAmelCase :						Optional[int] = n - 1
      while n > 0:
            if n % 2 == 1:
                  __lowerCAmelCase :						str = multiply(_lowerCamelCase       ,     _lowerCamelCase						)
            __lowerCAmelCase :						Tuple = multiply(_lowerCamelCase       ,     _lowerCamelCase						)
            __lowerCAmelCase :						Dict = int(n / 2						)
      return res_matrix[0][0]







def 		_lowercase			(					lowercase__						):
      if n <= 1:
            return n
      __lowerCAmelCase :						Any = 0
      __lowerCAmelCase :						Dict = 1
      for _ in range(2       ,     n + 1						):
            __lowerCAmelCase :						int = fiba, fiba + fiba
      return fiba







def 		_lowercase			(					):
      for ordinal in "0th 1st 2nd 3rd 10th 100th 1000th".split():
            __lowerCAmelCase :						Union[str, Any] = int(''''''.join(c for c in ordinal if c in '''0123456789'''						)						)  # 1000th --> 1000
            print(
                f"""{ordinal} fibonacci number using matrix exponentiation is """
                f"""{nth_fibonacci_matrix(_lowerCamelCase						)} and using bruteforce is """
                f"""{nth_fibonacci_bruteforce(_lowerCamelCase						)}\n"""						)
      # from timeit import timeit
      # print(timeit("nth_fibonacci_matrix(1000000)",
      #              "from main import nth_fibonacci_matrix", number=5))
      # print(timeit("nth_fibonacci_bruteforce(1000000)",
      #              "from main import nth_fibonacci_bruteforce", number=5))
      # 2.3342058970001744
      # 57.256506615000035


if __name__ == "__main__":
 import doctest

 doctest.testmod()
 main()





def 		_lowercase			(					lowercase__						):
      return "".join(chr(ord(lowercase__						) + 3_2						) if '''A''' <= char <= '''Z''' else char for char in word						)


if __name__ == "__main__":
 from doctest import testmod

 testmod()


