# Independently authored integer and modular power examples.
print(pow(2, 31), pow(-3, 5), pow(0, 0))
print(pow(True, False), pow(False, True), pow(3, True))
print(pow(base=7, exp=13, mod=19), pow(7, 13, -19))
print(pow(10**30 + 7, 33, 97), pow(-(10**30 + 7), 32, -97))
print(pow(3, 7, None), pow(mod=None, exp=3, base=-7))
power = pow
def make(modulus):
    return lambda base, exponent: power(base, exponent, modulus)
modulo = make(-23)
print(modulo(9, 19), modulo(-9, 20))
for modulus in (-1, 1):
    print(pow(0, 0, modulus), pow(2, -100, modulus))
try:
    pow(3, 7, 0)
except ValueError as error:
    print(type(error).__name__, str(error))
try:
    pow(0, -1)
except ZeroDivisionError as error:
    print(type(error).__name__, str(error))
