package main
import (
"bufio"
"io"
"os"
"strconv"
)
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return val
}
t := nextInt()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
for ; t > 0; t-- {
n := nextInt()
a := make([]int, n)
last := make([]int, n+1)
for i := 0; i < n; i++ {
v := nextInt()
a[i] = v
last[v] = i + 1
}
k := n - 2
for k >= 0 && a[k] <= a[k+1] {
k--
}
if k < 0 {
out.WriteString("0\n")
continue
}
seen := make([]bool, n+1)
cnt := 0
mx := k
for i := 0; i <= mx; i++ {
v := a[i]
if !seen[v] {
seen[v] = true
cnt++
}
if last[v]-1 > mx {
mx = last[v] - 1
}
}
out.WriteString(strconv.Itoa(cnt))
out.WriteByte('\n')
}
out.Flush()
}