# your code goes here
def addition(x, y):
return (x+y)%p
def minus(x, y):
return (x-y) % p
def multiply(x, y):
return x*y % p
def multiplyAll(*args):
rlt = 1
for x in args:
rlt = multiply(x, rlt)
return rlt
def exp(x, y):
rlt = 1
while y != 0:
if y % 2 == 1:
rlt = multiply(x, rlt)
x = multiply(x, x)
y = y // 2
return rlt
def inverse(x):
return exp(x, p-2)
def divide(x, y):
return multiply(x, inverse(y))
p = 11
print (exp(2, 2) == 4)
print (exp(2, 1) == 2)
print (multiply(2, exp(2, p-2)) == 1)
print (divide(6, 8) == 9)
print (minus(2, 3) == p-1)
x1 = divide(5, 2)
z1 = divide(1, 2)
x2 = divide(2, 7)
z2 = divide(1, 7)
x3 = divide(8, 3)
z3 = divide(1, 3)
inner = minus(multiply(x2, z1), multiply(z2, x1))
print (z3 == multiplyAll(exp(inner, 3), z1, z2))
IyB5b3VyIGNvZGUgZ29lcyBoZXJlCmRlZiBhZGRpdGlvbih4LCB5KToKICAgIHJldHVybiAoeCt5KSVwCgpkZWYgbWludXMoeCwgeSk6CiAgICByZXR1cm4gKHgteSkgJSBwCgpkZWYgbXVsdGlwbHkoeCwgeSk6CiAgICByZXR1cm4geCp5ICUgcAoKZGVmIG11bHRpcGx5QWxsKCphcmdzKToKICAgIHJsdCA9IDEKICAgIGZvciB4IGluIGFyZ3M6CiAgICAgICAgcmx0ID0gbXVsdGlwbHkoeCwgcmx0KQogICAgcmV0dXJuIHJsdAoKZGVmIGV4cCh4LCB5KToKICAgIHJsdCA9IDEKICAgIHdoaWxlIHkgIT0gMDoKICAgICAgICBpZiB5ICUgMiA9PSAxOgogICAgICAgICAgICBybHQgPSBtdWx0aXBseSh4LCBybHQpCiAgICAgICAgeCA9IG11bHRpcGx5KHgsIHgpCiAgICAgICAgeSA9IHkgLy8gMgogICAgcmV0dXJuIHJsdAoKZGVmIGludmVyc2UoeCk6CiAgICByZXR1cm4gZXhwKHgsIHAtMikKCmRlZiBkaXZpZGUoeCwgeSk6CiAgICByZXR1cm4gbXVsdGlwbHkoeCwgaW52ZXJzZSh5KSkKcCA9IDExCnByaW50IChleHAoMiwgMikgPT0gNCkKcHJpbnQgKGV4cCgyLCAxKSA9PSAyKQpwcmludCAobXVsdGlwbHkoMiwgZXhwKDIsIHAtMikpID09IDEpCnByaW50IChkaXZpZGUoNiwgOCkgPT0gOSkKcHJpbnQgKG1pbnVzKDIsIDMpID09IHAtMSkKeDEgPSBkaXZpZGUoNSwgMikKejEgPSBkaXZpZGUoMSwgMikKeDIgPSBkaXZpZGUoMiwgNykKejIgPSBkaXZpZGUoMSwgNykKeDMgPSBkaXZpZGUoOCwgMykKejMgPSBkaXZpZGUoMSwgMykKCmlubmVyID0gbWludXMobXVsdGlwbHkoeDIsIHoxKSwgbXVsdGlwbHkoejIsIHgxKSkKcHJpbnQgKHozID09IG11bHRpcGx5QWxsKGV4cChpbm5lciwgMyksIHoxLCB6MikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA==