#include <bits/stdc++.h>
using namespace std;
inline long long read() {
  long long w = 0, h = 1;
  char ch = getchar();
  while (ch < '0' || ch > '9') {
    if (ch == '-') h = -h;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    w = w * 10 + ch - '0';
    ch = getchar();
  }
  return w * h;
}
void write(long long x) {
  if (x < 0) x = -x, putchar('-');
  if (x > 9) write(x / 10);
  putchar(x % 10 + '0');
}
const long long mod = 1000000007;
long long n, k, a[2000010], ans, sum;
long long cnt[2000010];
long long qpow(long long b, long long k) {
  long long s = 1;
  while (k) {
    if (k & 1) s = s * b % mod;
    b = b * b % mod;
    k >>= 1;
  }
  return s % mod;
}
long long inv(long long a) { return qpow(a, mod - 2); }
long long C(long long n, long long m) {
  return cnt[n] * inv(cnt[m]) % mod * inv(cnt[n - m]) % mod;
}
signed main() {
  n = read();
  k = read();
  for (long long i = 1; i <= n; i++) a[i] = read(), sum = (sum + a[i]) % mod;
  cnt[0] = 1;
  for (long long i = 1; i <= n; i++) cnt[i] = cnt[i - 1] * i % mod;
  long long ans1 = 0, ans2 = 0;
  for (long long i = 0; i <= k; i++)
    ans1 =
        (ans1 + qpow(-1, i) * C(k, i) % mod * qpow(k - i, n) % mod + mod) % mod;
  ans1 = ans1 * inv(cnt[k]) % mod;
  for (long long i = 0; i <= k; i++)
    ans2 =
        (ans2 + qpow(-1, i) * C(k, i) % mod * qpow(k - i, n - 1) % mod + mod) %
        mod;
  ans2 = ans2 * inv(cnt[k]) % mod;
  printf("%lld\n", sum * (ans1 + ans2 * (n - 1) % mod) % mod);
  return 0;
}
