long long quickpow(long long a, long long b) {
if (b < 0) return 0;
long long ret = 1;
a %= mod;
while(b) {
if (b & 1) ret = (ret * a) % mod;
b >>= 1;
a = (a * a) % mod;
}
return ret;
}
long long inv(long long a) {
return quickpow(a, mod - 2);
}
(a/b)%mod=a*inv(b)
inv(b)=(a^(mod-2))%mod
快速乘,计算a*b%mod
long long Mul(long long a,long long b,long long mod){
long long ret = 0;
while(b){
if(b & 1)
res = (res + a) % mod;
a = (a + a) % mod;
b >> = 1;
}
return res;
}