import java.io.OutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.UncheckedIOException; import java.util.Objects; import java.nio.charset.Charset; import java.util.StringTokenizer; import java.io.Writer; import java.io.OutputStreamWriter; import java.io.BufferedReader; import java.io.InputStream; /** * Built using CHelper plug-in * Actual solution is at the top * * @author mikit */ public class Main { public static void main(String[] args) { InputStream inputStream = System.in; OutputStream outputStream = System.out; LightScanner in = new LightScanner(inputStream); LightWriter out = new LightWriter(outputStream); YC186 solver = new YC186(); solver.solve(1, in, out); out.close(); } static class YC186 { public void solve(int testNumber, LightScanner in, LightWriter out) { // out.setBoolLabel(LightWriter.BoolLabel.YES_NO_FIRST_UP); LongChineseRemainder cr = new LongChineseRemainder(); try { for (int i = 0; i < 3; i++) { long x = in.longs(), y = in.longs(); cr.grow(x, y); } out.ansln(cr.getB1() == 0 ? cr.getModulo() : cr.getB1()); } catch (IllegalStateException ex) { out.ansln(-1); } } } static class Vec3i implements Comparable { public int x; public int y; public int z; public Vec3i(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Vec3i vec3i = (Vec3i) o; return x == vec3i.x && y == vec3i.y && z == vec3i.z; } public int hashCode() { return Objects.hash(x, y, z); } public String toString() { return "(" + x + ", " + y + ", " + z + ")"; } public int compareTo(Vec3i o) { if (x == o.x) { if (y == o.y) { return Integer.compare(z, o.z); } return Integer.compare(y, o.z); } return Integer.compare(x, o.x); } } static class Vec3l implements Comparable { public long x; public long y; public long z; public Vec3l(long x, long y, long z) { this.x = x; this.y = y; this.z = z; } public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Vec3i vec3i = (Vec3i) o; return x == vec3i.x && y == vec3i.y && z == vec3i.z; } public int hashCode() { return Objects.hash(x, y, z); } public String toString() { return "(" + x + ", " + y + ", " + z + ")"; } public int compareTo(Vec3l o) { if (x == o.x) { if (y == o.y) { return Long.compare(z, o.z); } return Long.compare(y, o.z); } return Long.compare(x, o.x); } } static class LongChineseRemainder { private long b1 = 0; private long m1 = 1; public void grow(long b2, long m2) { Vec3l sol = LongEuclidSolver.solve(m1, m2); long p = sol.x, d = sol.z; if ((b2 - b1) % d != 0) { throw new IllegalStateException("Given x % " + m2 + " = " + b2 + " and x % " + m1 + " = " + b1 + ", gcd was " + sol.z); } long m = m1 * (m2 / d); long tmp = (b2 - b1) / d * p % (m2 / d); long r = (b1 + m1 * tmp) % m; if (r < 0) { r += m; r %= m; } b1 = r; m1 = m; } public long getB1() { return b1; } public long getModulo() { return m1; } } static class LightWriter implements AutoCloseable { private final Writer out; private boolean autoflush = false; private boolean breaked = true; public LightWriter(Writer out) { this.out = out; } public LightWriter(OutputStream out) { this(new BufferedWriter(new OutputStreamWriter(out, Charset.defaultCharset()))); } public LightWriter print(char c) { try { out.write(c); breaked = false; } catch (IOException ex) { throw new UncheckedIOException(ex); } return this; } public LightWriter print(String s) { try { out.write(s, 0, s.length()); breaked = false; } catch (IOException ex) { throw new UncheckedIOException(ex); } return this; } public LightWriter ans(String s) { if (!breaked) { print(' '); } return print(s); } public LightWriter ans(long l) { return ans(Long.toString(l)); } public LightWriter ans(int i) { return ans(Integer.toString(i)); } public LightWriter ansln(int... n) { for (int n1 : n) { ans(n1).ln(); } return this; } public LightWriter ansln(long... n) { for (long n1 : n) { ans(n1).ln(); } return this; } public LightWriter ln() { print(System.lineSeparator()); breaked = true; if (autoflush) { try { out.flush(); } catch (IOException ex) { throw new UncheckedIOException(ex); } } return this; } public void close() { try { out.close(); } catch (IOException ex) { throw new UncheckedIOException(ex); } } } static class LongEuclidSolver { private LongEuclidSolver() { } public static Vec3l solve(long a, long b) { LongEuclidSolver.ReferenceLong p = new LongEuclidSolver.ReferenceLong(), q = new LongEuclidSolver.ReferenceLong(); long d = solve(a, b, p, q); return new Vec3l(p.val, q.val, d); } private static long solve(long a, long b, LongEuclidSolver.ReferenceLong p, LongEuclidSolver.ReferenceLong q) { if (b == 0) { p.val = 1; q.val = 0; return a; } else { long d = solve(b, a % b, q, p); q.val -= (a / b) * p.val; return d; } } private static class ReferenceLong { private long val; } } static class LightScanner { private BufferedReader reader = null; private StringTokenizer tokenizer = null; public LightScanner(InputStream in) { reader = new BufferedReader(new InputStreamReader(in)); } public String string() { if (tokenizer == null || !tokenizer.hasMoreTokens()) { try { tokenizer = new StringTokenizer(reader.readLine()); } catch (IOException e) { throw new UncheckedIOException(e); } } return tokenizer.nextToken(); } public long longs() { return Long.parseLong(string()); } } }