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