快速幂
时间复杂度O(logn)
(a + b) modp=(a modp + b modp) modp
(a - b) modp = (a modp - b modp + p) modp
a * b modp = a modp * b modp
const long long mod=1e9+7;
long long fastpow(long long x,long long y){
x%=mod;
long long res=1;
while(y){
if(y & 1) res=res*x%mod;
y>>=1;
x=x*x%mod;
}
return res;
}