← Home
```go
package main

import (
	"fmt"
	"sort"
)

func main() {
	var t int
	fmt.Scan(&t)
	for i := 0; i < t; i++ {
		var n int
		fmt.Scan(&n)
		a := make([]int, n)
		for i := 0; i < n; i++ {
			fmt.Scan(&a[i])
		}
		sumv := int64(0)
		for _, val := range a {
			sumv += int64(v2(val))
		}
		def := int64(n) - sumv
		if def <= 0 {
			fmt.Println(0)
			continue
		}
		var contrib []int
		for i := 1; i <= n; i++ {
			v := v2(i)
			if v > 0 {
				contrib = append(contrib, v)
			}
		}
		sort.Slice(contrib, func(i, j int) bool { return contrib[i] > contrib[j] })
		cursum := int64(0)
		cnt := 0
		ok := false
		for _, v := range contrib {
			cursum += int64(v)
			cnt++
			if cursum >= def {
				ok = true
				break
			}
		}
		if ok {
			fmt.Println(cnt)
		} else {
			fmt.Println(-1)
		}
	}
}

func v2(x int) int {
	cnt := 0
	for x%2 == 0 {
		x /= 2
		cnt++
	}
	return cnt
}
```