import sys from collections import deque,defaultdict #import pypyjit import itertools import heapq import bisect import queue #pypyjit.set_param("max_unroll_recursion=-1") #sys.setrecursionlimit(10 ** 9) input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) ml = lambda: map(str, input().split()) li = lambda: list(mi()) li_st = lambda: list(map(str, input().split())) lli = lambda n: [li() for _ in range(n)] mod = 998244353 INF = 8 * 10**18 N,S,B = mi() H = li() max_h = [] for i in range(N): max_h.append(H[i] + B*S) now = 0 ans = "Yes" for i in range(N-1): if now < max_h[i]: now = max_h[i] if now >= H[i+1]: pass else: ans = "No" break print(ans)