#include using namespace std; #define int long long #define MOD 1000000007 #define MAX_N 100000 #define MAX_P 200005 int fact[MAX_P]; int extgcd(int a,int b,int& x,int& y){ int d=a; if(b!=0){ d=extgcd(b,a%b,y,x); y-=(a/b)*x; }else{ x=1;y=0; } return d; } int mod_inverse(int a,int m){ int x,y; extgcd(a,m,x,y); return (m+x%m)%m; } int euler_phi(int n){ int res=n; for(int i=2;i*i<=n;i++){ if(n%i==0){ res=res/i*(i-1); for(;n%i==0;n/=i); } } if(n!=1) res=res/n*(n-1); return res; } int euler[MAX_N]; void euler_phi2(){ for(int i=0;i0){ if(n&1) (res*=x)%=mod; (x*=x)%=mod; n>>=1; } return res; } void init(int p){ fact[0]=1; for(int i=1;ie2+e3) return 0; return a1*mod_inverse(a2*a3%p,p)%p; } int mod_comb2(int n,int k,int mod){ int res=1; for(int i=0;i>n; int ans=4*mod_pow(5,n/2-1,MOD)%MOD; if(n%2) ans=ans*3%MOD; if(n==1) ans=2; cout<