← Home
package main

import (
	"bufio"
	"fmt"
	"os"
)

const MOD = 1000000007

func power(base, exp int64) int64 {
	var res int64 = 1
	base %= MOD
	for exp > 0 {
		if exp%2 == 1 {
			res = (res * base) % MOD
		}
		base = (base * base) % MOD
		exp /= 2
	}
	return res
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	var n, k int64
	if _, err := fmt.Fscan(reader, &n, &k); err != nil {
		return
	}

	var sum int64 = 0
	for i := int64(0); i < n; i++ {
		var w int64
		fmt.Fscan(reader, &w)
		sum = (sum + w) % MOD
	}

	if k == 1 {
		ans := (sum * (n % MOD)) % MOD
		fmt.Println(ans)
		return
	}

	invFact := make([]int64, k+1)
	var factK int64 = 1
	for i := int64(1); i <= k; i++ {
		factK = (factK * i) % MOD
	}

	invFact[k] = power(factK, MOD-2)
	for i := k - 1; i >= 0; i-- {
		invFact[i] = (invFact[i+1] * (i + 1)) % MOD
	}

	var Snk int64 = 0
	var Sn1k int64 = 0
	for j := int64(0); j <= k; j++ {
		term1 := power(j, n)
		term2 := power(j, n-1)
		term := (invFact[k-j] * invFact[j]) % MOD
		if (k-j)%2 == 1 {
			term = MOD - term
		}
		Snk = (Snk + term*term1) % MOD
		Sn1k = (Sn1k + term*term2) % MOD
	}

	ans := (sum * Snk) % MOD
	ans = (ans + sum*((n-1)%MOD)%MOD*Sn1k) % MOD

	fmt.Println(ans)
}