For problem statement at 0-999/200-299/220-229/220/problemD.txt this is a correct solution, but verifier at 0-999/200-299/220-229/220/verifierD.go ends with case 1 failed
expected:
30716604
got:
23408208
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
const MOD int64 = 1000000007
func gcd(a, b int) int {
for b != 0 {
a, b = b, a%b
}
return a
}
func mul(a, b int64) int64 {
return (a % MOD) * (b % MOD) % MOD
}
func prod3(a, b, c int64) int64 {
return mul(mul(a, b), c)
}
func c3(n int64) int64 {
if n < 3 {
return 0
}
return n * (n - 1) * (n - 2) / 6
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var w, h int
fmt.Fscan(in, &w, &h)
xe := int64(w/2 + 1)
xo := int64(w+1) - xe
ye := int64(h/2 + 1)
yo := int64(h+1) - ye
n00 := xe * ye
n01 := xe * yo
n10 := xo * ye
n11 := xo * yo
N := int64(w+1) * int64(h+1)
total := prod3(N, N-1, N-2)
s := prod3(n00, n01, n10)
s = (s + prod3(n00, n01, n11)) % MOD
s = (s + prod3(n00, n10, n11)) % MOD
s = (s + prod3(n01, n10, n11)) % MOD
bad := 6 * s % MOD
evenArea := (total - bad + MOD) % MOD
col := int64(0)
col = (col + int64(h+1)%MOD*c3(int64(w+1))%MOD) % MOD
col = (col + int64(w+1)%MOD*c3(int64(h+1))%MOD) % MOD
hp1 := h + 1
for dx := 1; dx <= w; dx++ {
wx := int64(w + 1 - dx)
row := int64(0)
for dy := 1; dy <= h; dy++ {
g := gcd(dx, dy)
if g > 1 {
row += 2 * wx * int64(hp1-dy) * int64(g-1)
}
}
col = (col + row%MOD) % MOD
}
col = col * 6 % MOD
ans := (evenArea - col + MOD) % MOD
fmt.Fprintln(out, ans)
}
```