← Home
```go
package main

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

func main() {
	in := bufio.NewReader(os.Stdin)
	var t int
	fmt.Fscan(in, &t)
	for tt := 0; tt < t; tt++ {
		var n int
		fmt.Fscan(in, &n)
		a := make([]int64, n)
		for i := 0; i < n; i++ {
			fmt.Fscan(in, &a[i])
		}
		freq := make(map[int64]int)
		for i := 0; i < n; i++ {
			freq[a[i]]++
		}
		var mex int64 = 0
		for {
			if _, ok := freq[mex]; !ok || freq[mex] == 0 {
				break
			}
			mex++
		}
		m0 := int(mex)
		dp := make([]int64, m0+1)
		dp[0] = 0
		for y := 1; y <= m0; y++ {
			minv := int64(1 << 60)
			for k := 0; k < y; k++ {
				kk := int64(k)
				f, ok := freq[kk]
				if !ok || f == 0 {
					continue
				}
				ff := int64(f)
				cost := (ff-1)*int64(y) + int64(k) + dp[k]
				if cost < minv {
					minv = cost
				}
			}
			dp[y] = minv
		}
		fmt.Println(dp[m0])
	}
}
```