← Home
package main

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

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

	var t int
	if _, err := fmt.Fscan(in, &t); err != nil {
		return
	}

	for tc := 0; tc < t; tc++ {
		var n int
		fmt.Fscan(in, &n)

		a := make([]int, n+1)
		for i := 1; i <= n; i++ {
			fmt.Fscan(in, &a[i])
		}

		lastPos := make([]int, n+1)
		for i := 1; i <= n; i++ {
			lastPos[i] = n + 1
		}

		N := make([]int, n+1)
		for i := n; i >= 1; i-- {
			N[i] = lastPos[a[i]]
			lastPos[a[i]] = i
		}

		limit := n + 1
		for i := 1; i <= n; i++ {
			if N[i] == n+1 {
				limit = i
				break
			}
		}

		M := make([]int, n+1)
		maxN := 0
		for i := 1; i <= n; i++ {
			if N[i] > maxN {
				maxN = N[i]
			}
			M[i] = maxN
		}

		ans := 1
		curr := 1
		for curr < limit {
			ans++
			curr = M[curr]
		}
		fmt.Fprintln(out, ans)
	}
}