← Home
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)
}