#include #include #include #include using namespace std; typedef long long ll; typedef vector vi; typedef vector vl; typedef pair P; typedef vector

vp; const ll mod=1e9+7; ll gcd(ll a,ll b){ if(!b) return a; return gcd(b,a%b); } ll lcm(ll a,ll b){ return a/gcd(a,b)*b; } int n; vi a,b; vi ac,ad,as,bc,bd,bs; map,vp> m; void f(vi& A,vi& C,vi& D,vi& S){ for(int i=0;i>A[i]; A[i]--; } int cnt=0; for(int i=0;i>n; a=b=ad=bd=vi(n); ac=bc=vi(n,-1); f(a,ac,ad,as); f(b,bc,bd,bs); for(int i=0;ifirst.first; vp v=i->second; int A=as[tmp.first],B=bs[tmp.second],S=v.size(); ll l=lcm(A,B),g=gcd(A,B),P=v[0].first,Q=v[0].second; vl u(S+1),w(B/g); u[S]=l; int I=Q/g; for(int i=0;i