import math
def expr(i,x,y):
    return i-math.floor(i/x)-math.floor(i/y)+math.floor(i/(x*y))
cnt1,cnt2,x,y = map(int,list(input().split()))

N = math.ceil((cnt1 + cnt2+1)/(1-1/(y*x)))

cnt1 = max(cnt1 - math.floor(N/y)+math.floor(N/(y*x)),0)
cnt2 = max(cnt2 - math.floor(N/x)+math.floor(N/(y*x)),0)


while expr(N, x, y)>=cnt1+cnt2:
    cnt1 = max(cnt1 + math.floor(N/y)-math.floor(N/(y*x)),0)
    cnt2 = max(cnt2 + math.floor(N/x)-math.floor(N/(y*x)),0)
    N = N-1
    cnt1 = max(cnt1 - math.floor(N/y)+math.floor(N/(y*x)),0)
    cnt2 = max(cnt2 - math.floor(N/x)+math.floor(N/(y*x)),0)

    
print(N+1)