from math import gcd def linear_congruence(a: int, b: int, m: int) -> tuple[int, int] | tuple[None, None]: # a x = b (mod m) g = gcd(a, m) if b % g != 0: return None, None a2 = a // g b2 = b // g m2 = m // g # a' x = b' (mod m') x = b2 * pow(a2, -1, m2) % m2 return x, m2 def crt2(r1, m1, r2, m2): # x = r1 (mod m1) # x = r1 + m1 t # r1 + m1 t = r2 (mod m2) # m1 t = r2 - r1 (mod m2) t, m = linear_congruence(m1, r2 - r1, m2) if t is None: return None x = r1 + m1 * t return x B0, C0 = map(int, input().split()) B1, C1 = map(int, input().split()) ans = crt2(C0 % B0, B0, C1 % B1, B1) if ans is None: print('NaN') else: print(ans)