#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include using namespace std; //using namespace atcoder; using ll = long long; using vll = vector; using vvll = vector; using pll = pair; using vpll = vector; using ld = long double; using vld = vector; using vb = vector; #define rep(i, n) for (ll i = 0; i < (n); i++) #ifdef LOCAL #define dbg(x) cerr << __LINE__ << " : " << #x << " = " << (x) << endl #else #define dbg(x) true #endif template void chmin(T& a, T b) { a = min(a, b);} template void chmax(T& a, T b) { a = max(a, b);} template ostream& operator<<(ostream& s, const vector& a) { for(auto i : a) s << i << ' '; return s; } constexpr ll INFL = 1LL << 60; constexpr ld EPS = 1e-12; ld PI = acos(-1.0); ll ext_gcd(ll a, ll b, ll& x, ll& y) { if(b == 0) { x = 1; y = 0; return a; } ll g = ext_gcd(b, a % b, y, x); y -= a/b * x; return g; } pair crt_extgcd(const vector& r, const vector& m) { pair ret; ll& rem = ret.first; ll& mod = ret.second; rem = 0, mod = 1; for(int i = 0; i < (int)r.size(); ++i) { ll inv_mod, _; ll div = ext_gcd(mod, m[i], inv_mod, _); // mod*inv_mod = 1 (mod m[i]/div) if((r[i] - rem) % div != 0) return make_pair(0, -1); ll tmp = (r[i] - rem) / div * inv_mod % (m[i] / div); rem += mod * tmp; mod *= m[i] / div; // lcm(m, m[i]) } rem = (rem % mod + mod) % mod; return ret; } void solve() { vll r(3), m(3); rep(i, 3) cin >> r[i] >> m[i]; pll p = crt_extgcd(r, m); ll ans = p.first; if(ans == 0) ans = p.second; cout << ans << endl; return; } int main() { std::cin.tie(nullptr); std::ios_base::sync_with_stdio(false); cout << fixed << setprecision(15); solve(); }