package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var t int
fmt.Fscan(in, &t)
for ; t > 0; t-- {
var n, m int
fmt.Fscan(in, &n, &m)
var s string
fmt.Fscan(in, &s)
cnt1 := 0
for i := 0; i < n; i++ {
if s[i] == '1' {
cnt1++
}
}
if (cnt1*m)%n != 0 {
fmt.Fprintln(out, -1)
continue
}
target := (cnt1 * m) / n
if m > 0 {
cur := 0
for i := 0; i < m; i++ {
if s[i] == '1' {
cur++
}
}
found := -1
if cur == target {
found = 0
} else {
for i := m; i < n; i++ {
if s[i] == '1' {
cur++
}
if s[i-m] == '1' {
cur--
}
if cur == target {
found = i - m + 1
break
}
}
}
if found != -1 {
l := found + 1
r := found + m
fmt.Fprintln(out, 1)
fmt.Fprintln(out, l, r)
continue
}
}
L := n - m
if L > 0 {
need := cnt1 - target
cur := 0
for i := 0; i < L; i++ {
if s[i] == '1' {
cur++
}
}
found := -1
if cur == need {
found = 0
} else {
for i := L; i < n; i++ {
if s[i] == '1' {
cur++
}
if s[i-L] == '1' {
cur--
}
if cur == need {
found = i - L + 1
break
}
}
}
if found != -1 {
l := found + 1
r := found + L
if l == 1 {
fmt.Fprintln(out, 1)
fmt.Fprintln(out, r+1, n)
} else if r == n {
fmt.Fprintln(out, 1)
fmt.Fprintln(out, 1, l-1)
} else {
fmt.Fprintln(out, 2)
fmt.Fprintln(out, 1, l-1)
fmt.Fprintln(out, r+1, n)
}
continue
}
}
fmt.Fprintln(out, -1)
}
}