def reciprocal(base,precision,n):
if n==1: return 1
index = 1
while pow(base,index,n) != 1:
index += 1
index = (precision//index+2)*index
return base**precision-base**index//n%base**precision
def to_base(num,base,precision):
res = ""
for _ in range(precision):
res = str(num%base) + res
num //= base
return res
def gcd(a,b):
while b:
a,b = b,a%b
return a
def exp(p,n,precision):
precision += 10
old_res = 0
res = 1
add = 1
i = 1
m = p**precision
while old_res != res:
g = gcd(m,i)