#include using namespace std; #define ALL(x) begin(x),end(x) #define rep(i,n) for(int i=0;i<(n);i++) #define debug(v) cout<<#v<<":";for(auto x:v){cout<bool chmax(T &a,const T &b){if(abool chmin(T &a,const T &b){if(b ostream &operator<<(ostream &os,const vector&v){ for(int i=0;i<(int)v.size();i++) os< istream &operator>>(istream &is,vector&v){ for(T &x:v)is>>x; return is; } // (val, mod) pair Garner(const vector &rems,const vector &mods){ // {g, x}, g=gcd(a,b), xa = g (mod b) function(ll,ll)> gcd_inv=[](ll a,ll b){ a%=b; if(a<0) a+=b; if(a==0) return make_pair(b,0ll); ll s=b,t=a,m0=0,m1=1; while(t){ ll u=s/t; s-=t*u,m0-=m1*u; swap(s,t); swap(m0,m1); } if(m0<0) m0+=b/s; return make_pair(s,m0); }; ll R=0,M=1; for(int i=0;i<(int)rems.size();i++){ ll r=rems[i],m=mods[i]; r%=m;if(r<0) r+=m; if(m>M) swap(m,M),swap(r,R); if(M%m==0){ if(R%m!=r) return {0,0}; continue; } auto [g,iM]=gcd_inv(M,m); ll u=m/g; if((r-R)%g) return {0,0}; ll x=(r-R)/g%u*iM%u; R+=x*M; M*=u; if(R<0) R+=M; } return {R,M}; } signed main(){ vector r(3),m(3); rep(i,3) cin>>r[i]>>m[i]; auto p=Garner(r,m); if(p.second==0) cout<<-1<