← Home
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")
		}
	}
}