For problem statement at 2000-2999/2000-2099/2090-2099/2092/problemE.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2090-2099/2092/verifierE.go ends with test 1 (sample) failed
input:
2
3 3 6
1 1 0
1 2 1
1 3 0
3 1 1
3 2 0
3 3 1
3 4 12
1 1 0
1 2 1
1 3 0
1 4 1
2 1 1
2 2 0
2 3 1
2 4 0
3 1 0
3 2 1
3 3 0
3 4 1
reference:
0
1
candidate:
4
0
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
const MOD int64 = 1000000007
func modPow(base, exp, mod int64) int64 {
result := int64(1)
base %= mod
for exp > 0 {
if exp&1 == 1 {
result = result * base % mod
}
base = base * base % mod
exp >>= 1
}
return result
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var t int
fmt.Fscan(reader, &t)
for i := 0; i < t; i++ {
var n, m int64
var k int
fmt.Fscan(reader, &n, &m, &k)
totalBoundary := int64(2*(n-2) + 2*(m-2))
boundaryColored := int64(0)
sumColors := int64(0)
for j := 0; j < k; j++ {
var x, y, c int64
fmt.Fscan(reader, &x, &y, &c)
if x == 1 || x == n || y == 1 || y == m {
if !((x == 1 && y == 1) || (x == 1 && y == m) || (x == n && y == 1) || (x == n && y == m)) {
boundaryColored++
sumColors += c
}
}
}
freeBoundary := totalBoundary - boundaryColored
var ans int64
if freeBoundary > 0 {
exp := n*m - int64(k) - 1
ans = modPow(2, exp, MOD)
} else {
if sumColors%2 == 1 {
ans = 0
} else {
exp := n*m - int64(k)
ans = modPow(2, exp, MOD)
}
}
fmt.Fprintln(writer, ans)
}
}
```