package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
fmt.Fscan(reader, &t)
for tc := 0; tc < t; tc++ {
var n int
fmt.Fscan(reader, &n)
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &a[i])
}
l, r := 0, n-1
for l < r && a[l] == a[r] {
l++
r--
}
if l >= r {
fmt.Fprintln(writer, "YES")
continue
}
if check(a, a[l]) || check(a, a[r]) {
fmt.Fprintln(writer, "YES")
} else {
fmt.Fprintln(writer, "NO")
}
}
}
func check(a []int, x int) bool {
i, j := 0, len(a)-1
for i < j {
if a[i] == x {
i++
continue
}
if a[j] == x {
j--
continue
}
if a[i] != a[j] {
return false
}
i++
j--
}
return true
}