For problem statement at 0-999/200-299/290-299/293/problemA.txt this is a correct solution, but verifier at 0-999/200-299/290-299/293/verifierA.go ends with All 40 tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
// Use buffered scanner for potentially large input
scanner := bufio.NewScanner(os.Stdin)
// Set buffer size to handle lines up to ~4MB (2*10^6 chars + overhead)
const maxCapacity = 5 * 1024 * 1024
buf := make([]byte, maxCapacity)
scanner.Buffer(buf, maxCapacity)
scanner.Split(bufio.ScanWords)
// Read n (we can skip parsing it as an int, just advance scanner)
scanner.Scan()
// Read s
scanner.Scan()
s := scanner.Text()
// Read t
scanner.Scan()
t := scanner.Text()
c11 := 0
c10 := 0
c01 := 0
// Count the types of pairs
length := len(s)
for i := 0; i < length; i++ {
sb := s[i]
tb := t[i]
if sb == '1' {
if tb == '1' {
c11++
} else {
c10++
}
} else {
if tb == '1' {
c01++
}
}
}
yScore := 0
aScore := 0
// Phase 1: Process pairs where both have '1'.
// These are highest priority for both players.
// Yaroslav moves first.
yScore += (c11 + 1) / 2
aScore += c11 / 2
// Determine whose turn it is for Phase 2 based on moves made in Phase 1
// If c11 is even, Yaroslav (0) moves next. If odd, Andrey (1) moves next.
turn := c11 % 2
// Phase 2: Process pairs where one has '1' and the other '0'.
// Yaroslav gains points from c10, Andrey gains points from c01.
// Players will prioritize gaining a point or denying the opponent a point.
for c10 > 0 || c01 > 0 {
if turn == 0 { // Yaroslav's turn
if c10 > 0 {
// Take own point
c10--
yScore++
} else {
// Block Andrey's point
c01--
}
} else { // Andrey's turn
if c01 > 0 {
// Take own point
c01--
aScore++
} else {
// Block Yaroslav's point
c10--
}
}
turn = 1 - turn
}
if yScore > aScore {
fmt.Println("First")
} else if aScore > yScore {
fmt.Println("Second")
} else {
fmt.Println("Draw")
}
}
```