# import sys

# sys.setrecursionlimit(10 ** 6)

int1 = lambda x: int(x) - 1

def II(): return int(eval(input()))



def MI(): return list(map(int, input().split()))

def MI1(): return list(map(int1, input().split()))



def LI(): return list(map(int, input().split()))

def LLI(rows_number): return [LI() for _ in range(rows_number)]



from math import ceil



def solve():

    a, b, c, d = MI()



    aoki = ceil(a / d)

    taka = ceil(c / b)

    # print(taka, aoki)



    if taka > aoki:

        print('No')

    else:   # taka <= aoki

        print('Yes')







if __name__ == '__main__':

    solve()

import sys

sys.setrecursionlimit(10 ** 6)

# input = sys.stdin.readline    ####

int1 = lambda x: int(x) - 1

def II(): return int(eval(input()))



def MI(): return list(map(int, input().split()))

def MI1(): return list(map(int1, input().split()))



def LI(): return list(map(int, input().split()))

def LI1(): return list(map(int1, input().split()))

def LLI(rows_number): return [LI() for _ in range(rows_number)]



INF = float('inf')



def solve():

    a, b, c, d = MI()



    for i in range(1000000):

        c -= b

        if c <= 0:

            print('Yes')

            return

        a -= d

        if a <= 0:

            print('No')

            return





if __name__ == '__main__':

    solve()

# import sys
# sys.setrecursionlimit(10 ** 6)
int1 = lambda x: int(x) - 1


def II():
    return int(eval(input()))


def MI():
    return list(map(int, input().split()))


def MI1():
    return list(map(int1, input().split()))


def LI():
    return list(map(int, input().split()))


def LLI(rows_number):
    return [LI() for _ in range(rows_number)]


from math import ceil


def solve():
    a, b, c, d = MI()
    aoki = ceil(a / d)
    taka = ceil(c / b)
    # print(taka, aoki)
    if taka > aoki:
        print("No")
    else:  # taka <= aoki
        print("Yes")


if __name__ == "__main__":
    solve()

import sys

sys.setrecursionlimit(10**6)
# input = sys.stdin.readline    ####
int1 = lambda x: int(x) - 1


def II():
    return int(eval(input()))


def MI():
    return list(map(int, input().split()))


def MI1():
    return list(map(int1, input().split()))


def LI():
    return list(map(int, input().split()))


def LI1():
    return list(map(int1, input().split()))


def LLI(rows_number):
    return [LI() for _ in range(rows_number)]


INF = float("inf")


def solve():
    a, b, c, d = MI()
    for i in range(1000000):
        c -= b
        if c <= 0:
            print("Yes")
            return
        a -= d
        if a <= 0:
            print("No")
            return


if __name__ == "__main__":
    solve()

-# import sys -# sys.setrecursionlimit(10 ** 6) +import sys + +sys.setrecursionlimit(10**6) +# input = sys.stdin.readline    #### +def LI1(): +    return list(map(int1, input().split())) + + -from math import ceil +INF = float("inf") -    aoki = ceil(a / d) -    taka = ceil(c / b) -    # print(taka, aoki) -    if taka > aoki: -        print("No") -    else:  # taka <= aoki -        print("Yes") +    for i in range(1000000): +        c -= b +        if c <= 0: +            print("Yes") +            return +        a -= d +        if a <= 0: +            print("No") +            return