#include using namespace std; #include long long invmod(long long a,long long m) { long long s=a%m,t=m,sx=1,sy=0,tx=0,ty=1; while(s%t!=0) { long long f=s/t; long long u=s-t*f,ux=sx-tx*f,uy=sy-ty*f; s=t,sx=tx,sy=ty; t=u,tx=ux,ty=uy; } if(tx<0)tx+=m; return tx; } long long garner(const vector&x,const vector&m,const int mod=0)//*=x mod m { vectorv(x.size()); v[0]=x[0]; for(int i=1;i long long garner_helper(vectorA,vectorB,const int mod,bool zero=true) { vectorprimes; for(int i=0;i1)primes.push_back(b); } sort(primes.begin(),primes.end()); primes.erase(unique(primes.begin(),primes.end()),primes.end()); vectora,b; bool flag=!zero; long long ret=1; for(int p:primes) { int res=-1,ma=1; for(int i=0;i=0&&res%p!=A[i]%p)return-1; if(ma>N; vectorA(N),B(N); for(int i=0;i>A[i]>>B[i]; cout<