For problem statement at 0-999/800-899/850-859/850/problemF.txt this is a correct solution, but verifier at 0-999/800-899/850-859/850/verifierF.go ends with all tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func power(base, exp int64) int64 {
var res int64 = 1
base %= 1000000007
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % 1000000007
}
base = (base * base) % 1000000007
exp /= 2
}
return res
}
func modInverse(n int64) int64 {
return power(n, 1000000007-2)
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
if _, err := fmt.Fscan(reader, &n); err != nil {
return
}
if n == 1 {
var a int
fmt.Fscan(reader, &a)
fmt.Println(0)
return
}
a := make([]int64, n)
var S int64 = 0
var maxA int64 = 0
for i := 0; i < n; i++ {
fmt.Fscan(reader, &a[i])
S += a[i]
if a[i] > maxA {
maxA = a[i]
}
}
M := int64(1000000007)
P := make([]int64, maxA+1)
P[1] = 0
for k := int64(1); k < maxA; k++ {
inv := modInverse(S - k)
P[k+1] = (P[k] + inv) % M
}
var ans int64 = 0
term1 := ((S - 1) % M * ((S - 1) % M)) % M
term1 = (term1 * modInverse(S)) % M
for i := 0; i < n; i++ {
x := a[i]
val1 := (x * term1) % M
val2 := (S - x) % M
val2 = (val2 * P[x]) % M
val3 := (x - 1 - val2) % M
if val3 < 0 {
val3 += M
}
val3 = (val3 * ((S - 1) % M)) % M
fx := (val1 - val3) % M
if fx < 0 {
fx += M
}
ans = (ans + fx) % M
}
fmt.Println(ans)
}