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)
}
}