#include <bits/stdc++.h>
using namespace std;
const long long maxn = 2e5 + 10;
const long long mod = 1e9 + 7;
long long ans;
long long n, k;
long long a[maxn];
long long z;
long long inv[maxn];
long long fact[maxn];
long long pashm[maxn];
void in();
void solve();
long long pwr(long long, long long);
long long oof(long long, long long);
long long C(long long, long long);
void out();
int main() {
  ios::sync_with_stdio(false);
  cout.tie(0);
  cin.tie(0);
  in();
  solve();
  out();
}
void in() {
  cin >> n >> k;
  for (long long i = 0; i < n; i++) cin >> a[i];
}
void solve() {
  fact[0] = 1;
  for (long long i = 1; i < maxn; i++) fact[i] = fact[i - 1] * i % mod;
  inv[maxn - 1] = pwr(fact[maxn - 1], -1);
  for (long long i = maxn - 2; i >= 0; i--) inv[i] = inv[i + 1] * (i + 1) % mod;
  long long sum = 0;
  for (long long i = 0; i < n; i++) sum = (sum + a[i]) % mod;
  z = (oof(n, k) + oof(n - 1, k) * (n - 1) % mod) % mod;
  ans = (ans + sum * z % mod) % mod;
}
long long oof(long long a, long long b) {
  long long z = 0;
  for (long long i = b; i >= 0; i--) {
    long long Z = 1;
    if ((b - i) % 2) Z *= -1;
    z = (z + Z * pwr(i, a) % mod * C(b, i) % mod + mod) % mod;
  }
  z *= inv[b];
  return z % mod;
}
long long pwr(long long a, long long b) {
  if (b < 0) return pwr(a, b + mod - 1);
  if (b == 0) return 1;
  long long c = pwr(a, b / 2);
  if (b % 2) return c * c % mod * a % mod;
  return c * c % mod;
}
long long C(long long n, long long k) {
  if (n == k) return 1;
  if (k > n) return 0;
  return fact[n] * inv[k] % mod * inv[n - k] % mod;
}
void out() { cout << ans; }
