← Home
package main

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

type FastScanner struct {
	r *bufio.Reader
}

func NewFastScanner() *FastScanner {
	return &FastScanner{r: bufio.NewReaderSize(os.Stdin, 1<<20)}
}

func (fs *FastScanner) NextInt64() int64 {
	sign := int64(1)
	val := int64(0)
	c, err := fs.r.ReadByte()
	for (c < '0' || c > '9') && c != '-' {
		c, err = fs.r.ReadByte()
		if err != nil {
			return 0
		}
	}
	if c == '-' {
		sign = -1
		c, err = fs.r.ReadByte()
		if err != nil {
			return 0
		}
	}
	for c >= '0' && c <= '9' {
		val = val*10 + int64(c-'0')
		c, err = fs.r.ReadByte()
		if err != nil {
			break
		}
	}
	return val * sign
}

func sieve(limit int) []int {
	isComp := make([]bool, limit+1)
	pr := []int{}
	for i := 2; i <= limit; i++ {
		if !isComp[i] {
			pr = append(pr, i)
			for j := i * i; j <= limit; j += i {
				isComp[j] = true
			}
		}
	}
	return pr
}

func main() {
	in := NewFastScanner()
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	primes := sieve(100)

	t := int(in.NextInt64())
	for ; t > 0; t-- {
		n := int(in.NextInt64())
		a := make([]int64, n)
		seen := make(map[int64]struct{}, n)
		dup := false
		for i := 0; i < n; i++ {
			a[i] = in.NextInt64()
			if _, ok := seen[a[i]]; ok {
				dup = true
			}
			seen[a[i]] = struct{}{}
		}
		if dup {
			fmt.Fprintln(out, "NO")
			continue
		}

		bad := false
		for _, p := range primes {
			if 2*p > n {
				break
			}
			cnt := make([]int, p)
			for i := 0; i < n; i++ {
				r := int(a[i] % int64(p))
				cnt[r]++
			}
			okResidue := false
			for r := 0; r < p; r++ {
				if cnt[r] <= 1 {
					okResidue = true
					break
				}
			}
			if !okResidue {
				bad = true
				break
			}
		}

		if bad {
			fmt.Fprintln(out, "NO")
		} else {
			fmt.Fprintln(out, "YES")
		}
	}
}