← Home
```go
package main

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

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

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

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

		a := make([]int, n)
		c := 0
		firstZero := int(1e9)
		for i := 0; i < n; i++ {
			fmt.Fscan(reader, &a[i])
			if a[i] != 0 {
				c++
			} else if firstZero == int(1e9) {
				firstZero = i
			}
		}

		firstBad := int(1e9)
		mex := 1
		seen := make([]bool, n+3)

		for i := n - 1; i >= 0; i-- {
			if a[i] > 0 {
				if a[i] < mex {
					firstBad = i
				}
				if a[i] <= n+1 {
					seen[a[i]] = true
					for seen[mex] {
						mex++
					}
				}
			}
		}

		if firstZero < firstBad {
			fmt.Fprintln(writer, c+1)
		} else {
			fmt.Fprintln(writer, c)
		}
	}
}
```