package main
import (
"bufio"
"os"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
const maxCapacity = 1024 * 1024
buf := make([]byte, maxCapacity)
scanner.Buffer(buf, maxCapacity)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
if !scanner.Scan() {
return
}
t := 0
for _, b := range scanner.Bytes() {
t = t*10 + int(b-'0')
}
for i := 0; i < t; i++ {
scanner.Scan()
n := 0
for _, b := range scanner.Bytes() {
n = n*10 + int(b-'0')
}
scanner.Scan()
m := 0
for _, b := range scanner.Bytes() {
m = m*10 + int(b-'0')
}
hasWR1, hasWRn, hasWC1, hasWCm := false, false, false, false
hasBR1, hasBRn, hasBC1, hasBCm := false, false, false, false
for r := 0; r < n; r++ {
scanner.Scan()
row := scanner.Bytes()
for c := 0; c < m && c < len(row); c++ {
ch := row[c]
if ch == 'W' {
if r == 0 { hasWR1 = true }
if r == n-1 { hasWRn = true }
if c == 0 { hasWC1 = true }
if c == m-1 { hasWCm = true }
} else if ch == 'B' {
if r == 0 { hasBR1 = true }
if r == n-1 { hasBRn = true }
if c == 0 { hasBC1 = true }
if c == m-1 { hasBCm = true }
}
}
}
if (hasWR1 && hasWRn && hasWC1 && hasWCm) || (hasBR1 && hasBRn && hasBC1 && hasBCm) {
writer.WriteString("YES\n")
} else {
writer.WriteString("NO\n")
}
}
}