a,b,n,m = map(int,input().split()) if b > a: a,b = b,a n,m = m,n l = 0 r = (a-b+n-1)//n def calc(x): nb = b + x//n na = a - x//n * n return min(na,nb) while r > l + 2: c1 = (2*l+r)//3 c2 = (l+2*r)//3 cal1 = calc(c1*n) cal2 = calc(c2*n) if cal1 < cal2: l = c1 else: r = c2 ans = 0 for i in range(l-1,r+2): ans = max(ans,calc(i*n)) print(ans)