package main
import (
"bufio"
"fmt"
"os"
)
const MOD int64 = 1000000007
func powMod(a, e int64) int64 {
r := int64(1)
for e > 0 {
if e&1 == 1 {
r = r * a % MOD
}
a = a * a % MOD
e >>= 1
}
return r
}
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
var n int
fmt.Fscan(in, &n)
a := make([]int64, n)
var totalBalls int64
maxA := 0
for i := 0; i < n; i++ {
fmt.Fscan(in, &a[i])
totalBalls += a[i]
if int(a[i]) > maxA {
maxA = int(a[i])
}
}
pref := make([]int64, maxA)
for i := 1; i < maxA; i++ {
pref[i] = (pref[i-1] + powMod(totalBalls-int64(i), MOD-2)) % MOD
}
sum := int64(n - 1)
for i := 0; i < n; i++ {
x := a[i]
sum += (totalBalls - x) % MOD * pref[int(x)-1] % MOD
if sum >= MOD {
sum %= MOD
}
}
ans := (totalBalls - 1) % MOD * (sum % MOD) % MOD
fmt.Fprint(out, ans)
}