




def      __magic_name__							(					A						:   List[str],    A						:   str,    A						:   List[str]  ):






			'''simple docstring'''







			if power < 0:
						return -1
			base %= mod
			a       =     1

			while power > 0:
						if power & 1:
									a       =     (result * base) % mod
						a       =     power >> 1
						a       =     (base * base) % mod

			return result




def      __magic_name__							(					):






			'''simple docstring'''







			print(modular_exponential(3,    200,    13  )  )


if __name__ == "__main__":
		import doctest

		doctest.testmod()

		main()










from __future__ import annotations







def 	A (		A__		,		A__		,		A__		,		A__			):

     # Base Case
     if counter == 0 or capacity == 0:
          return 0

     # If weight of the nth item is more than Knapsack of capacity,
     #   then this item cannot be included in the optimal solution,
     # else return the maximum of two cases:
     #   (1) nth item included
     #   (2) not included
     if weights[counter - 1] > capacity:
          return knapsack(A__		,		A__		,		A__		,		counter - 1			)
     else:
          UpperCAmelCase    :					List[str]			=      capacity - weights[counter - 1]
          UpperCAmelCase    :					Tuple			=      values[counter - 1] + knapsack(
              A__		,		A__		,		A__		,		counter - 1			)
          UpperCAmelCase    :					Optional[int]			=      knapsack(A__		,		A__		,		A__		,		counter - 1			)
          return max(A__		,		A__			)


if __name__ == "__main__":
      import doctest

      doctest.testmod()



