import std; void main () { int N, S, B; readln.read(N, S, B); auto H = readln.split.to!(int[]); // 最高高度を維持して良いってことか bool ok = true; long cur = H[0] + 1L * S * B; foreach (i; 0..N - 1) { cur = max(cur, H[i] + 1L * S * B); if (cur < H[i + 1]) ok = false; } if (ok) { writeln("Yes"); } else { writeln("No"); } } void read (T...) (string S, ref T args) { import std.conv : to; import std.array : split; auto buf = S.split; foreach (i, ref arg; args) { arg = buf[i].to!(typeof(arg)); } }