ll exgcd(ll a,ll b,ll &x,ll &y){ if(!b) { x = (ll)1,y = (ll)0; return a; } ll r = exgcd(b,a%b,x,y); ll t = x; x = y; y = t - a/b*y; return r;}//计算模n下a的逆,如果不存在逆,返回-1ll inv(ll a,ll n){ ll d,x,y; d = exgcd(a,n,x,y); return d == 1 ? (x+n)%n : -1;}ll mul_mod(ll a,ll b,ll n){ return a*b%n;}ll pow_mod(ll a,ll p,ll n){ if(p == 0) return 1; ll ans = pow_mod(a,p/2,n); ans = ans*ans%n; if(p%2) ans = ans*a%n; return ans;}//求解模方程 a^x = b(mod n), n为素数,无解返回-1ll log_mod(ll a,ll b,ll n){ ll m,v,e = 1LL,i; m = (ll)sqrt(n+0.5); v = inv(pow_mod(a,m,n),n); mapx; x[1] = 0; for(i=1;i