import math

# input
J = list(map(int, input().split()))

def juice(A_int, A, B, C, D):
    if A < B:
        ans = 'No'
        return ans
    if A <= B + C:
        if D == B:
            ans = 'Yes'
            return ans
        if D < B:
            ans = 'No'
            return ans
        l = math.floor((B + C - A) / (D - B) + 1)
        A = A + l * (D - B) # AをB+Cより大きくする
        print(l, A)
        if A in A_int:
            ans = 'Yes'
            return ans
        A_int.add(A)
        return juice(A_int, A, B, C, D)
    else:
        k = math.ceil((A - C) / B)
        A = A - k * B
        print(k, A)
        if A < 0:
            ans = 'No'
            return ans
        if (A + D) in A_int:
            ans = 'Yes'
            return ans 
        A_int.add(A + D)
        return juice(A_int, A + D, B, C, D)

A_int = set([J[0]])
A = J[0]
B = J[1]
C = J[2]
D = J[3]
print(juice(A_int, A, B, C, D))
