← Home
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")
		}
	}
}