A,B,N,M=map(int,input().split())
L,R=0,10**18+1
while L<R:
  X=(L+R+1)>>1
  C,D=A,B
  if max(C,D)<X:
    R=min(R-1,X)
    continue
  if C>=X:
    y=(C-X)//N
    C-=y*N
    D+=y
  if D>=X:
    y=(D-X)//M
    D-=y*M
    C+=y
  if min(C,D)>=X:
    L=X
  else:
    R=min(R-1,X)
print(L)