```go
package main
import (
"bufio"
"fmt"
"os"
)
var rdr = bufio.NewReaderSize(os.Stdin, 1<<20)
func nextInt64() int64 {
var sign int64 = 1
var val int64 = 0
c, _ := rdr.ReadByte()
for (c < '0' || c > '9') && c != '-' {
c, _ = rdr.ReadByte()
}
if c == '-' {
sign = -1
c, _ = rdr.ReadByte()
}
for c >= '0' && c <= '9' {
val = val*10 + int64(c-'0')
c, _ = rdr.ReadByte()
}
return val * sign
}
func main() {
out := bufio.NewWriterSize(os.Stdout, 1<<20)
t := int(nextInt64())
for ; t > 0; t-- {
n := int(nextInt64())
seen := make(map[int64]struct{})
ans := 0
for i := 0; i < n; i++ {
x := nextInt64()
for x%2 == 0 {
if _, ok := seen[x]; !ok {
seen[x] = struct{}{}
ans++
}
x /= 2
}
}
fmt.Fprintln(out, ans)
}
out.Flush()
}
```