






def      UpperCAmelCase						( lowerCAmelCase__					,     lowerCAmelCase__					,     lowerCAmelCase__	):


		'''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      UpperCAmelCase						( ):


		'''simple docstring'''

		print(modular_exponential(3					,     200					,     13	)	)


if __name__ == "__main__":
					import doctest

					doctest.testmod()

					main()









def      UpperCAmelCase						( lowerCAmelCase__					,     lowerCAmelCase__	):


		'''simple docstring'''

		if n < 0:
				return 0
		# table[i] represents the number of ways to get to amount i
		__A    =							[0] * (n + 1)

		# There is exactly 1 way to get to zero(You pick no coins).
		__A    =							1

		# Pick all coins one by one and update table[] values
		# after the index greater than or equal to the value of the
		# picked coin
		for coin_val in s:
				for j in range(lowerCAmelCase__					,     n + 1	):
						table[j] += table[j - coin_val]

		return table[n]


if __name__ == "__main__":
					import doctest

					doctest.testmod()

