// by zzq
inline LL Mul(LL a,LL b,LL mod){
LL tmp=a*b-(LL)((long double)a/mod*b+0.5)*mod; tmp%=mod;
return tmp<0?tmp+mod:tmp;
}
// by zzq
inline LL Mul(LL a,LL b,LL mod){
LL tmp=a*b-(LL)((long double)a/mod*b+0.5)*mod; tmp%=mod;
return tmp<0?tmp+mod:tmp;
}