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