package main
import (
"bufio"
"bytes"
"fmt"
"os"
)
func isPalindrome(b []byte) bool {
for l, r := 0, len(b)-1; l < r; l, r = l+1, r-1 {
if b[l] != b[r] {
return false
}
}
return true
}
func main() {
in := bufio.NewReader(os.Stdin)
var t int
fmt.Fscan(in, &t)
var out bytes.Buffer
for ; t > 0; t-- {
var n int
var s string
fmt.Fscan(in, &n, &s)
found := false
for mask := 0; mask < (1 << n); mask++ {
ok := true
seenOne := false
var rem []byte
for i := 0; i < n; i++ {
if (mask>>i)&1 == 1 {
if s[i] == '1' {
seenOne = true
} else if seenOne {
ok = false
break
}
} else {
rem = append(rem, s[i])
}
}
if !ok || !isPalindrome(rem) {
continue
}
k := 0
for i := 0; i < n; i++ {
if (mask>>i)&1 == 1 {
k++
}
}
fmt.Fprintln(&out, k)
first := true
for i := 0; i < n; i++ {
if (mask>>i)&1 == 1 {
if !first {
out.WriteByte(' ')
}
first = false
fmt.Fprint(&out, i+1)
}
}
out.WriteByte('\n')
found = true
break
}
if !found {
fmt.Fprintln(&out, -1)
}
}
fmt.Print(out.String())
}