```go
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 tc := 0; tc < t; tc++ {
var n, m int
fmt.Fscan(in, &n, &m)
grid := make([][]byte, n)
maxCol := make([]int, n)
for i := 0; i < n; i++ {
line := make([]byte, m)
fmt.Fscan(in, &line)
grid[i] = line
maxCol[i] = -1
for j := 0; j < m; j++ {
if grid[i][j] == 'X' {
maxCol[i] = j
}
}
}
for i := 0; i < n; i++ {
grid[i][0] = 'X'
}
for i := 0; i < n; i++ {
if maxCol[i] >= 0 {
for j := 0; j <= maxCol[i]; j++ {
grid[i][j] = 'X'
}
}
}
for i := 0; i < n; i++ {
out.Write(grid[i])
out.WriteByte('\n')
}
}
}
```