← Home
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	in := bufio.NewReaderSize(os.Stdin, 1<<20)
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	var t int
	fmt.Fscan(in, &t)

	for ; t > 0; t-- {
		var n int
		fmt.Fscan(in, &n)

		d := make([]int64, n)
		for i := 0; i < n; i++ {
			fmt.Fscan(in, &d[i])
		}

		sort.Slice(d, func(i, j int) bool { return d[i] < d[j] })

		x := d[0] * d[n-1]
		ok := true

		for i := 0; i < n; i++ {
			if d[i]*d[n-1-i] != x {
				ok = false
				break
			}
		}

		if ok {
			divs := make([]int64, 0)
			for i := int64(2); i*i <= x; i++ {
				if x%i == 0 {
					divs = append(divs, i)
					if i != x/i {
						divs = append(divs, x/i)
					}
				}
			}

			sort.Slice(divs, func(i, j int) bool { return divs[i] < divs[j] })

			if len(divs) != n {
				ok = false
			} else {
				for i := 0; i < n; i++ {
					if divs[i] != d[i] {
						ok = false
						break
					}
				}
			}
		}

		if ok {
			fmt.Fprintln(out, x)
		} else {
			fmt.Fprintln(out, -1)
		}
	}
}