/**
* @brief 二項係数 mod P
*/template<intmod>longlongcomb(longlonga,longlongb){staticboolinit=1;staticlonglongfac[1000001],ifac[1000001];if(init){init=0;fac[0]=1;ifac[0]=1;automod_pow=[&](lintx,lintn){lintans=1;while(n!=0){if(n&1)ans=ans*x%mod;x=x*x%mod;n=n>>1;}returnans;};for(inti=0;i<1000000;i++){fac[i+1]=fac[i]*(i+1)%mod;ifac[i+1]=ifac[i]*mod_pow(i+1,MOD-2)%mod;}}if(a==0&&b==0)return1;if(a<b||a<0)return0;longlongtmp=ifac[a-b]*ifac[b]%mod;returntmp*fac[a]%mod;}
#line 1 "math/comb.hpp"
/**
* @brief 二項係数 mod P
*/template<intmod>longlongcomb(longlonga,longlongb){staticboolinit=1;staticlonglongfac[1000001],ifac[1000001];if(init){init=0;fac[0]=1;ifac[0]=1;automod_pow=[&](lintx,lintn){lintans=1;while(n!=0){if(n&1)ans=ans*x%mod;x=x*x%mod;n=n>>1;}returnans;};for(inti=0;i<1000000;i++){fac[i+1]=fac[i]*(i+1)%mod;ifac[i+1]=ifac[i]*mod_pow(i+1,MOD-2)%mod;}}if(a==0&&b==0)return1;if(a<b||a<0)return0;longlongtmp=ifac[a-b]*ifac[b]%mod;returntmp*fac[a]%mod;}