#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; typedef long long int ll; typedef pair P; const ll MOD=1e9+7; const ll MAX=32000; vector prime; bool isprime[MAX]; void sieve(){ for(ll i=3; i>n; sieve(); unordered_map mp; for(int i=0; i>x>>y; ll y0=y; for(auto p:prime){ if(y0%p==0){ ll q=1; while(y0%p==0){ y0/=p; q*=p; } auto itr=mp.find(p); if(itr==mp.end()){ mp[p]=P(q, x%q); }else{ ll x1=(itr->second).second; ll q1=(itr->second).first; ll q0=min(q1, q); if(x1%q0!=x%q0){ cout<<-1<second=P(q, x%q); } } } if(y0>1){ ll p=y0, q=p; auto itr=mp.find(p); if(itr==mp.end()){ mp[p]=P(q, x%q); }else{ ll x1=(itr->second).second; if(x1%q!=x%q){ cout<<-1<0) nuee=0; } if(nuee){ ll mp0=1; for(int i=0; i