← Home
```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
}
```