#include #include #include #include #include #include #include #include using namespace std; using ll = long long; using pii = pair;using pll = pair;using pci = pair; using vi = vector;using vl = vector;using vs = vector;using vb = vector;using vc = vector; using vpii = vector;using vpll = vector;using vpci = vector; using vvi = vector>;using vvl = vector>;using vvb = vector; using mpii = map;using mpll = map; using mpib = map;using mpil = map; using mpci = map;using mpsi = map; using mpivi = map>;using mpivl = map>; using mplvl = map; using mpisi = map>;using mpisl = map>; #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define YesNo(flag) if(flag){printf("Yes\n");}else{printf("No\n");} #define OUT(x) {cout << x << '\n';} #define OUT_(x) {cout << x << ' ';} #define all(x) (x).begin(),(x).end() inline void scan(){} template inline void scan(Head&head,Tail&... tail){std::cin>>head;scan(tail...);} #define INT(...) int __VA_ARGS__;scan(__VA_ARGS__) #define LL(...) long long __VA_ARGS__;scan(__VA_ARGS__) #define STR(...) string __VA_ARGS__;scan(__VA_ARGS__) #define CHR(...) char __VA_ARGS__;scan(__VA_ARGS__) template inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; } template inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; } template inline T ifloor(T x, T y){return x/y-(x%y ? (x < 0)^(y < 0) : 0);} template inline T iceil(T x, T y){return x/y+(x%y ? (x >= 0)^(y < 0) : 0);} int iinf = 1000000000; ll linf = 1000000000000000000LL; mt19937 mt; int main(){ LL(n,s,b); vl H(n);rep(i,n)scan(H[i]); ll nows = s,nowh = H[0]; rep(i,n - 1){ int nexth = H[i + 1]; if(nowh >= nexth){ nows = s; nowh = nexth; continue; }else{ ll ng = -1,ok = 10;//cnt while(ok - ng > 1){ ll mid = (ok + ng)/2; if(nowh + mid*b >= nexth){ ok = mid; }else{ ng = mid + 1; } } if(ok > s){ OUT("No"); return 0; }else{ nows = s; nowh = nexth; } } } OUT("Yes"); }