package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
fmt.Fscan(reader, &t)
for i := 0; i < t; i++ {
var n int
fmt.Fscan(reader, &n)
a := make([]int, n)
for j := 0; j < n; j++ {
fmt.Fscan(reader, &a[j])
}
if n%2 != 0 {
fmt.Fprintln(writer, "NO")
continue
}
sort.Ints(a)
half := n / 2
b := make([]int, n)
for j := 0; j < half; j++ {
b[2*j] = a[j]
b[2*j+1] = a[half+j]
}
possible := true
for j := 0; j < n; j++ {
prev := b[(j-1+n)%n]
next := b[(j+1)%n]
if (b[j] > prev && b[j] > next) || (b[j] < prev && b[j] < next) {
continue
}
possible = false
break
}
if possible {
fmt.Fprintln(writer, "YES")
for j := 0; j < n; j++ {
if j > 0 {
fmt.Fprint(writer, " ")
}
fmt.Fprint(writer, b[j])
}
fmt.Fprintln(writer)
} else {
fmt.Fprintln(writer, "NO")
}
}
}