def modpow(b,e,n) res = 1 while (e>0) if e & 1 == 1 res = (res*b)%n end e = e >> 1 b=(b*b)%n end return res end