← Home
```go
package main

import "fmt"

func main() {
    var t int
    fmt.Scan(&t)
    
    for i := 0; i < t; i++ {
        board := make([]string, 8)
        for j := 0; j < 8; j++ {
            fmt.Scan(&board[j])
        }
        
        var kr, kc [2]int
        k := 0
        for r := 0; r < 8; r++ {
            for c := 0; c < 8; c++ {
                if board[r][c] == 'K' {
                    kr[k], kc[k] = r, c
                    k++
                }
            }
        }
        
        dist0 := bfs(kr[0], kc[0])
        dist1 := bfs(kr[1], kc[1])
        
        canMeet := false
        for r := 0; r < 8 && !canMeet; r++ {
            for c := 0; c < 8 && !canMeet; c++ {
                if board[r][c] != '#' && dist0[r][c] >= 0 && dist1[r][c] >= 0 && dist0[r][c]%2 == dist1[r][c]%2 {
                    canMeet = true
                }
            }
        }
        
        if canMeet {
            fmt.Println("YES")
        } else {
            fmt.Println("NO")
        }
    }
}

func bfs(sr, sc int) [][]int {
    dist := make([][]int, 8)
    for i := range dist {
        dist[i] = make([]int, 8)
        for j := range dist[i] {
            dist[i][j] = -1
        }
    }
    
    queue := [][2]int{{sr, sc}}
    dist[sr][sc] = 0
    
    dr := []int{-2, -2, 2, 2}
    dc := []int{-2, 2, -2, 2}
    
    for len(queue) > 0 {
        r, c := queue[0][0], queue[0][1]
        queue = queue[1:]
        
        for i := 0; i < 4; i++ {
            nr, nc := r+dr[i], c+dc[i]
            if nr >= 0 && nr < 8 && nc >= 0 && nc < 8 && dist[nr][nc] == -1 {
                dist[nr][nc] = dist[r][c] + 1
                queue = append(queue, [2]int{nr, nc})
            }
        }
    }
    
    return dist
}
```