package main
import (
"bufio"
"fmt"
"os"
)
func readInt(reader *bufio.Reader) (int64, error) {
var res int64
var b byte
var err error
for {
b, err = reader.ReadByte()
if err != nil {
return 0, err
}
if b >= '0' && b <= '9' {
res = int64(b - '0')
break
}
}
for {
b, err = reader.ReadByte()
if err != nil || b < '0' || b > '9' {
break
}
res = res*10 + int64(b-'0')
}
return res, nil
}
func main() {
reader := bufio.NewReaderSize(os.Stdin, 64*1024)
writer := bufio.NewWriterSize(os.Stdout, 64*1024)
defer writer.Flush()
c, err := readInt(reader)
if err != nil {
return
}
for tc := int64(0); tc < c; tc++ {
n, _ := readInt(reader)
t := make([]int64, n)
for i := int64(0); i < n; i++ {
t[i], _ = readInt(reader)
}
B := t[0]
A := int64(-1)
for i := int64(0); i < n; i++ {
if t[i]%B != 0 {
A = t[i]
break
}
}
if A == -1 {
valid := true
for i := int64(0); i < n; i++ {
if t[i] != (i+1)*B {
valid = false
break
}
}
if valid {
fmt.Fprintln(writer, "VALID")
} else {
fmt.Fprintln(writer, "INVALID")
}
continue
}
mulA := A
mulB := B
valid := true
for i := int64(0); i < n; i++ {
var next int64
if mulA < mulB {
next = mulA
mulA += A
} else if mulB < mulA {
next = mulB
mulB += B
} else {
next = mulA
mulA += A
mulB += B
}
if t[i] != next {
valid = false
break
}
}
if valid {
fmt.Fprintln(writer, "VALID")
} else {
fmt.Fprintln(writer, "INVALID")
}
}
}