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