#include <iostream>
using namespace std;


// スタミナ1減らし 高度B上げ
// 今の足場から隣に 高度が隣の足場の高さ未満の時無理
// 一回休憩してスタミナをS獲得 しかし高さはリセット


int main(void){
    // Your code here!
    int n,s,b,currentHigh,ss = 0;
    cin >> n >> s >> b;
    ss = s;
    int h[n],i = 0;
    for(int i = 0; i < n; i++)cin >> h[i];
    currentHigh = h[0];
    while(i != (n - 1)) {
        
        if(currentHigh >= h[i + 1]){
            if(currentHigh == h[i]) ss = s;
            i++;
            continue;
        }
        
        
        
        if(ss > 0){
            currentHigh += b;
            ss--;
        }
        else {
            currentHigh = h[i];
            ss = s; 
            
            if((s * b + h[i]) < h[i + 1]){
                cout << "No";
                return 0;
            }
        }
        
        
    
    }
    cout << "Yes";
}