For problem statement at 1000-1999/1500-1599/1550-1559/1551/problemD2.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1550-1559/1551/verifierD2.go ends with All 43 tests passed. can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
if _, err := fmt.Fscan(reader, &t); err != nil {
return
}
for test := 0; test < t; test++ {
var n, m, k int
fmt.Fscan(reader, &n, &m, &k)
possible := false
if n%2 == 1 {
if k >= m/2 && (k-m/2)%2 == 0 {
possible = true
}
} else if m%2 == 1 {
if k%2 == 0 && k <= (m-1)*n/2 {
possible = true
}
} else {
if k%2 == 0 && k <= n*m/2 {
possible = true
}
}
if !possible {
fmt.Fprintln(writer, "NO")
continue
}
fmt.Fprintln(writer, "YES")
ans := make([][]byte, n)
for i := 0; i < n; i++ {
ans[i] = make([]byte, m)
}
kLeft := k
if n%2 == 1 {
for j := 0; j < m; j += 2 {
ans[n-1][j] = 'L'
ans[n-1][j+1] = 'R'
}
kLeft -= m / 2
}
if m%2 == 1 {
for i := 0; i < n; i += 2 {
ans[i][m-1] = 'U'
ans[i+1][m-1] = 'D'
}
}
for i := 0; i < n/2*2; i += 2 {
for j := 0; j < m/2*2; j += 2 {
if kLeft >= 2 {
ans[i][j] = 'L'
ans[i][j+1] = 'R'
ans[i+1][j] = 'L'
ans[i+1][j+1] = 'R'
kLeft -= 2
} else {
ans[i][j] = 'U'
ans[i+1][j] = 'D'
ans[i][j+1] = 'U'
ans[i+1][j+1] = 'D'
}
}
}
for i := 0; i < n; i++ {
for j := 0; j < m; j++ {
if ans[i][j] == 'L' || ans[i][j] == 'U' {
r1, c1 := i, j
var r2, c2 int
if ans[i][j] == 'L' {
r2, c2 = i, j+1
} else {
r2, c2 = i+1, j
}
used := make([]bool, 26)
check := func(r, c int) {
if r >= 0 && r < n && c >= 0 && c < m {
if ans[r][c] >= 'a' && ans[r][c] <= 'z' {
used[ans[r][c]-'a'] = true
}
}
}
check(r1-1, c1)
check(r1+1, c1)
check(r1, c1-1)
check(r1, c1+1)
check(r2-1, c2)
check(r2+1, c2)
check(r2, c2-1)
check(r2, c2+1)
var c byte
for c = 'a'; c <= 'z'; c++ {
if !used[c-'a'] {
break
}
}
ans[r1][c1] = c
ans[r2][c2] = c
}
}
}
for i := 0; i < n; i++ {
fmt.Fprintln(writer, string(ans[i]))
}
}
}