← Home
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)
	}
}