#include using namespace std; #define ll long long #define ull unsigned long long #define ld long double using LL = long long; using ULL = unsigned long long; using VI = vector; using VVI = vector; using VVVI = vector; using VL = vector; using VVL = vector; using VVVL = vector; using VB = vector; using VVB = vector; using VVVB = vector; using VD = vector; using VVD = vector; using VVVD = vector; using VC = vector; using VS = vector; using VVC = vector; using PII = pair; using PLL = pair; using PDD = pair; using PIL = pair; using MII = map; using MLL = map; using SI = set; using SL = set; using MSI = multiset; using MSL = multiset; template using MAXPQ = priority_queue; template using MINPQ = priority_queue< T, vector, greater >; const ll MOD = 1000000007; const ll MOD2 = 998244353; const ll INF = 1LL << 60; #define PI 3.14159265358979323846 #define FOR(i, a, b) for(int i = (a); i < (b); ++i) #define REP(i, n) FOR(i, 0, n) #define EACH(e, v) for(auto &e : v) #define RITR(it, v) for(auto it = (v).rbegin(); it != (v).rend(); ++it) #define ALL(v) v.begin(),v.end() vector x8={1,1,1,0,0,-1,-1,-1},y8={1,0,-1,1,-1,1,0,-1}; int dx4[4]={1,-1,0,0}, dy4[4]={0,0,1,-1}; /* memo -uf,RMQ(segtree),BIT,BIT2,SegTree,SegTreeLazy -isprime,Eratosthenes,gcdlcm,factorize,divisors,modpow,moddiv nCr(+modnCr,inverse,extend_euclid.powmod),tobaseB,tobase10 -dijkstra,Floyd,bellmanford,sccd,topological,treediamiter -compress1,compress2,rotate90 -co,ci,fo1,fo2,fo3,fo4 -bitsearch,binaryserach -bfs -SegTreedec,SegTreeLazydec */ long long gcd(long long a, long long b) { if (b == 0) { return a; } else { return gcd(b, a % b); } } long long lcm(long long a, long long b) { long long d = gcd(a, b); return a / d * b; } pair crt(vector &b, vector &m){ auto mod = [](long long a, long long m){return (a%m+m)%m;}; auto extgcd = [] (long long a,long long b, long long &p, long long &q, auto extgcd){ if(b==0){ p = 1;q = 0; return a; } long long d = extgcd(b,a%b,q,p,extgcd); q -= a/b*p; return d; }; long long r = 0, M = 1; for(int i = 0; i < (int)b.size(); i++){ long long p,q; long long d = extgcd(M,m[i],p,q,extgcd); if((b[i]-r)%d != 0) return {0,-1}; long long t = (b[i]-r) / d * p % (m[i]/d); r += M*t; M *= m[i]/d; } return {mod(r,M),M}; } int main(){ cin.tie(0); ios_base::sync_with_stdio(0); ll N = 3; VL a(N),b(N); for(ll i = 0; i < N; i++) cin >> a[i] >> b[i]; PLL t = crt(a,b); if(t==PLL{0,-1}){ cout << -1 << '\n'; } else{ ll ans = t.first; if(ans==0){ ans = t.second; } cout << t.first << '\n'; } }