```go
package main
import (
"bufio"
"fmt"
"os"
)
func abs(x int64) int64 {
if x < 0 {
return -x
}
return x
}
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
for _ = range t {
var n int
fmt.Fscan(in, &n)
a := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
}
possible_m := []int64{a[0], -a[0]}
k := (n + 1) / 2
need := k - 1
ans := "NO"
for _, m := range possible_m {
var A, C int
for i := 1; i < n; i++ {
var pj int64 = abs(a[i])
if pj == 0 {
if int64(0) < m {
A++
}
} else {
vneg := -pj
vpos := pj
num_less := 0
if vneg < m {
num_less++
}
if vpos < m {
num_less++
}
if num_less == 2 {
A++
} else if num_less == 1 {
C++
}
}
}
min_p := A
max_p := A + C
if need >= min_p && need <= max_p {
ans = "YES"
break
}
}
fmt.Println(ans)
}
}
```