```go
package main
import (
"bufio"
"fmt"
"os"
)
func abs(x int64) int64 {
if x < 0 {
return -x
}
return x
}
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
powers := make([]int64, 30)
powers[0] = 1
for i := 1; i < 30; i++ {
powers[i] = powers[i-1] * 2
}
var t int
fmt.Fscan(in, &t)
for tc := 0; tc < t; tc++ {
var n int
fmt.Fscan(in, &n)
for i := 0; i < n; i++ {
var a int64
fmt.Fscan(in, &a)
best := powers[0]
bestDiff := abs(a - best)
for j := 1; j < 30; j++ {
d := abs(a - powers[j])
if d < bestDiff {
bestDiff = d
best = powers[j]
}
}
if i > 0 {
fmt.Fprint(out, " ")
}
fmt.Fprint(out, best)
}
if tc+1 < t {
fmt.Fprintln(out)
}
}
}
```