package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
t, _ := strconv.Atoi(scanner.Text())
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for i := 0; i < t; i++ {
if !scanner.Scan() {
break
}
n, _ := strconv.Atoi(scanner.Text())
a := make([]int64, n)
for j := 0; j < n; j++ {
scanner.Scan()
val, _ := strconv.ParseInt(scanner.Text(), 10, 64)
a[j] = val
}
sort.Slice(a, func(i, j int) bool {
return a[i] < a[j]
})
p1 := a[n-1] * a[n-2] * a[n-3] * a[n-4] * a[n-5]
p2 := a[n-1] * a[n-2] * a[n-3] * a[0] * a[1]
p3 := a[n-1] * a[0] * a[1] * a[2] * a[3]
maxP := p1
if p2 > maxP {
maxP = p2
}
if p3 > maxP {
maxP = p3
}
fmt.Fprintln(out, maxP)
}
}