```go
package main
import (
"bytes"
"io"
"os"
"sort"
)
type FastScanner struct {
data []byte
idx int
n int
}
func NewFastScanner() *FastScanner {
b, _ := io.ReadAll(os.Stdin)
return &FastScanner{data: b, n: len(b)}
}
func (fs *FastScanner) NextInt() int {
for fs.idx < fs.n {
c := fs.data[fs.idx]
if (c >= '0' && c <= '9') || c == '-' {
break
}
fs.idx++
}
sign := 1
if fs.idx < fs.n && fs.data[fs.idx] == '-' {
sign = -1
fs.idx++
}
val := 0
for fs.idx < fs.n {
c := fs.data[fs.idx]
if c < '0' || c > '9' {
break
}
val = val*10 + int(c-'0')
fs.idx++
}
return sign * val
}
type Pair struct {
d int
h int64
}
func main() {
fs := NewFastScanner()
t := fs.NextInt()
var out bytes.Buffer
for ; t > 0; t-- {
n := fs.NextInt()
k := int64(fs.NextInt())
a := make([]int64, n)
for i := 0; i < n; i++ {
a[i] = int64(fs.NextInt())
}
p := make([]Pair, n)
for i := 0; i < n; i++ {
x := fs.NextInt()
if x < 0 {
x = -x
}
p[i] = Pair{d: x, h: a[i]}
}
sort.Slice(p, func(i, j int) bool {
return p[i].d < p[j].d
})
var sum int64
ok := true
for i := 0; i < n; i++ {
sum += p[i].h
if sum > k*int64(p[i].d) {
ok = false
break
}
}
if ok {
out.WriteString("YES\n")
} else {
out.WriteString("NO\n")
}
}
os.Stdout.Write(out.Bytes())
}
```