```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var q int
fmt.Fscan(in, &q)
for tc := 0; tc < q; tc++ {
var n int
var k int64
fmt.Fscan(in, &n, &k)
var s string
fmt.Fscan(in, &s)
b := []byte(s)
zeroPos := 0
for j := 0; j < n; j++ {
if b[j] == '0' {
if j > zeroPos {
cost := int64(j - zeroPos)
if k >= cost {
b[j], b[zeroPos] = b[zeroPos], b[j]
k -= cost
zeroPos++
} else {
b[j], b[j-int(k)] = b[j-int(k)], b[j]
break
}
} else {
zeroPos++
}
}
}
out.Write(b)
out.WriteByte('\n')
}
}
```