1000000000000 1000000000000 97
16
Use repeated doubling (binary multiplication): result=0; while b>0 if bit set add a; a=(a*2)%m; b=floor(b/2).
Use repeated doubling (binary multiplication): result=0; while b>0 if bit set add a; a=(a*2)%m; b=floor(b/2).