```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
for ; t > 0; t-- {
var n int
var f, a, b int64
fmt.Fscan(in, &n, &f, &a, &b)
m := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &m[i])
}
charge := f
prev := int64(0)
ok := true
for i := 0; i < n; i++ {
delta := m[i] - prev
cost := min(a*delta, b)
charge -= cost
if charge <= 0 {
ok = false
break
}
prev = m[i]
}
if ok {
fmt.Println("YES")
} else {
fmt.Println("NO")
}
}
}
func min(x, y int64) int64 {
if x < y {
return x
}
return y
}
```