← Home
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 t := 0; t < T; t++ {
		var n int
		fmt.Fscan(in, &n)

		max1, max2 := 0, 0
		for i := 0; i < n; i++ {
			var v int
			fmt.Fscan(in, &v)
			if v > max1 {
				max2 = max1
				max1 = v
			} else if v > max2 {
				max2 = v
			}
		}

		k := max2 - 1
		if n-2 < k {
			k = n - 2
		}
		if k < 0 {
			k = 0
		}
		fmt.Fprintln(out, k)
	}
}