#include <bits/stdc++.h>
using namespace std;
long long int fact[1000005];
long long int ifact[1000005];
long long int bexpo(long long int x, long long int n, long long int m) {
  long long int r = 1;
  x = x % m;
  while (n > 0) {
    if (n % 2) r = (r * x) % m;
    x = (x * x) % m;
    n = n / 2;
  }
  return r;
}
long long int ncr(long long int n, long long int r) {
  if (r > n) return 0;
  long long int ans = fact[n];
  ans = (ans * ifact[r]) % 1000000007;
  ans = (ans * ifact[n - r]) % 1000000007;
  return ans;
}
void pre() {
  fact[0] = 1;
  ifact[0] = 1;
  for (long long int i = 1; i < 1000005; i++)
    fact[i] = (fact[i - 1] * i) % 1000000007;
  ifact[1000005 - 1] = bexpo(fact[1000005 - 1], 1000000007 - 2, 1000000007);
  for (long long int i = 1000005 - 2; i > 0; i--)
    ifact[i] = (ifact[i + 1] * (i + 1)) % 1000000007;
}
long long int fn(long long int n, long long int k) {
  long long int ans = 0;
  for (long long int i = 0; i <= k; i++) {
    long long int temp = ncr(k, i);
    temp = (temp * bexpo(i, n, 1000000007)) % 1000000007;
    if ((k + i) % 2) {
      temp = temp * -1;
      temp %= 1000000007;
      temp = (temp + 1000000007) % 1000000007;
    }
    ans = (ans + temp) % 1000000007;
  }
  ans = (ans * ifact[k]) % 1000000007;
  return ans;
}
int main() {
  pre();
  long long int n, k;
  scanf("%lld%lld", &n, &k);
  long long int sum = 0;
  for (long long int i = 1; i <= n; i++) {
    long long int d;
    scanf("%lld", &d);
    sum = (sum + d) % 1000000007;
  }
  long long int temp = fn(n, k);
  temp = (temp + (n - 1) * (fn(n - 1, k)) % 1000000007) % 1000000007;
  sum = (sum * temp) % 1000000007;
  printf("%lld\n", sum);
  return 0;
}
