package main
import (
"fmt"
"sort"
)
func main() {
var t int
fmt.Scan(&t)
for ; t > 0; t-- {
var n int
fmt.Scan(&n)
a := make([]int, n)
sum := 0
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
sum += a[i]
}
if sum == 0 {
fmt.Println("NO")
continue
}
if sum > 0 {
sort.Sort(sort.Reverse(sort.IntSlice(a)))
} else {
sort.Ints(a)
}
curr := 0
good := true
for i := 0; i < n; i++ {
curr += a[i]
if curr == 0 {
good = false
break
}
}
if !good {
if sum > 0 {
sort.Ints(a)
} else {
sort.Sort(sort.Reverse(sort.IntSlice(a)))
}
curr = 0
good = true
for i := 0; i < n; i++ {
curr += a[i]
if curr == 0 {
good = false
break
}
}
if !good {
fmt.Println("NO")
continue
}
}
fmt.Println("YES")
for i := 0; i < n; i++ {
if i > 0 {
fmt.Print(" ")
}
fmt.Print(a[i])
}
fmt.Println()
}
}