#include using namespace std; template std::tuple egcd(T a, T b) { T x = 1, y = 0, u = 0, v = 1; while (b != 0) { T t = a / b; a -= t * b; x -= t * u; y -= t * v; std::swap(a, b); std::swap(x, u); std::swap(y, v); } return {a, x, y}; } template std::optional> crt(const std::vector &r, const std::vector &m) { assert(r.size() == m.size()); T x = 0, y = 1; for (std::size_t i = 0; i < r.size(); i++) { T u = r[i], v = m[i]; if (y < v) { std::swap(x, u); std::swap(y, v); } auto [d, a, _] = egcd(y, v); if ((u - x) % d != 0) return std::nullopt; T t = v / d; x += (u - x) / d % t * a % t * y; y *= t; } if (x < 0) x += y; return std::make_pair(x, y); } int main() { ios::sync_with_stdio(false); cin.tie(nullptr); vector X(3), Y(3); for (int i = 0; i < 3; i++) { cin >> X[i] >> Y[i]; } auto res = crt(X, Y); if (res) { if (res.value().first == 0) { cout << res.value().second << '\n'; } else { cout << res.value().first << '\n'; } } else { cout << -1 << '\n'; } return 0; }