from collections import defaultdict, deque, Counter # from functools import cache # import copy from itertools import combinations, permutations, product, accumulate, groupby, chain # from more_itertools import distinct_permutations from heapq import heapify, heappop, heappush import math import bisect # from pprint import pprint from random import randint, shuffle, randrange # from sortedcontainers import SortedSet, SortedList, SortedDict import sys # sys.setrecursionlimit(2000000) input = lambda: sys.stdin.readline().rstrip('\n') inf = float('inf') mod1 = 10**9+7 mod2 = 998244353 def ceil_div(x, y): return -(-x//y) ################################################# N, S, B = map(int, input().split()) H = list(map(int, input().split())) HH = [] for h in H: if not HH or HH[-1] < h: HH.append(h) for i in range(1, len(HH)): if HH[i-1]+B*S < HH[i]: print("No") exit() print("Yes")