package main
import (
"bufio"
"fmt"
"io"
"os"
"sort"
)
type FastScanner struct {
data []byte
idx int
n int
}
func NewFastScanner() *FastScanner {
data, _ := io.ReadAll(os.Stdin)
return &FastScanner{data: data, n: len(data)}
}
func (fs *FastScanner) NextInt() int64 {
for fs.idx < fs.n && (fs.data[fs.idx] < '0' || fs.data[fs.idx] > '9') && fs.data[fs.idx] != '-' {
fs.idx++
}
sign := int64(1)
if fs.idx < fs.n && fs.data[fs.idx] == '-' {
sign = -1
fs.idx++
}
var val int64
for fs.idx < fs.n && fs.data[fs.idx] >= '0' && fs.data[fs.idx] <= '9' {
val = val*10 + int64(fs.data[fs.idx]-'0')
fs.idx++
}
return val * sign
}
func lowerBound(a []int64, x int64) int {
l, r := 0, len(a)
for l < r {
m := (l + r) >> 1
if a[m] < x {
l = m + 1
} else {
r = m
}
}
return l
}
func main() {
fs := NewFastScanner()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
t := int(fs.NextInt())
const INF int64 = 1 << 60
for ; t > 0; t-- {
n := int(fs.NextInt())
m := int(fs.NextInt())
a := make([]int64, n)
for i := 0; i < n; i++ {
a[i] = fs.NextInt()
}
b := make([]int64, m)
for i := 0; i < m; i++ {
b[i] = fs.NextInt()
}
sort.Slice(b, func(i, j int) bool { return b[i] < b[j] })
prev := -INF
ok := true
for i := 0; i < n; i++ {
best := INF
if a[i] >= prev {
best = a[i]
}
need := prev + a[i]
idx := lowerBound(b, need)
if idx < m {
val := b[idx] - a[i]
if val < best {
best = val
}
}
if best == INF {
ok = false
break
}
prev = best
}
if ok {
fmt.Fprintln(out, "YES")
} else {
fmt.Fprintln(out, "NO")
}
}
}