#include <bits/stdc++.h>
using namespace std;
long long inv[500005], n, k, x, sum;
inline long long ksm(long long x, long long y) {
  long long ans1 = 1;
  while (y) {
    if (y & 1) ans1 = 1ll * ans1 * x % 1000000007;
    x = 1ll * x * x % 1000000007;
    y >>= 1;
  }
  return ans1;
}
inline long long S(long long n, long long m) {
  long long ans = 0;
  for (long long i = 0; i <= m; i++) {
    long long t =
        1ll * inv[i] * inv[m - i] % 1000000007 * ksm(m - i, n) % 1000000007;
    if (i & 1)
      ans = 1ll * (ans - t + 1000000007) % 1000000007;
    else
      ans = 1ll * (ans + t) % 1000000007;
  }
  return ans;
}
int main() {
  scanf("%lld%lld", &n, &k);
  inv[0] = inv[1] = 1;
  for (long long i = 2; i <= k; i++)
    inv[i] = -1ll * 1000000007 / i * inv[1000000007 % i] % 1000000007;
  for (long long i = 1; i <= k; i++)
    inv[i] = 1ll * inv[i - 1] * inv[i] % 1000000007;
  for (long long i = 1; i <= n; i++)
    scanf("%lld", &x), sum = 1ll * (sum + x) % 1000000007;
  long long ans =
      1ll * (S(n - 1, k - 1) + (1ll * (n + k - 1) * S(n - 1, k) % 1000000007)) %
      1000000007;
  ans = 1ll * ans * sum % 1000000007;
  printf("%lld\n", (ans % 1000000007 + 1000000007) % 1000000007);
  return 0;
}
