#include <bits/stdc++.h>
#pragma comment(linker, "/STACK:1000000000")
using namespace std;
const int maxn = (int)5010, mod = (int)1e9 + 7;
long long pr[maxn];
long long dp[maxn][maxn];
int a[maxn];
long long st[maxn];
int n, k;
long long my_pow(long long a, long long b) {
  if (b == 0) {
    return 1;
  }
  if (b & 1) {
    return a * my_pow(a, b - 1) % mod;
  }
  long long z = my_pow(a, b >> 1);
  return z * z % mod;
}
long long go(int pos, int now) {
  if (dp[pos][now] != -1) {
    return dp[pos][now];
  }
  if (pos == n) {
    if (now == 0) {
      return dp[pos][now] = 0;
    } else {
      long long z = (pr[now] * st[now]) % mod;
      if (now % 2 == 0) {
        z = (mod - z) % mod;
      }
      return dp[pos][now] = z;
    }
  }
  return dp[pos][now] =
             (go(pos + 1, now) * a[pos] + go(pos + 1, now + 1)) % mod;
}
int main() {
  memset(dp, -1, sizeof dp);
  cin >> n >> k;
  pr[0] = 1;
  for (int i = 1; i <= n; i++) {
    pr[i] = pr[i - 1] * (k - i + 1) % mod;
  }
  for (int i = 0; i <= n; i++) {
    if (i < k) {
      st[i] = my_pow(n, k - i);
    }
    if (i == k) {
      st[i] = 1;
    } else if (i > k) {
      st[i] = 0;
    }
  }
  for (int i = 0; i < n; i++) {
    scanf("%d", &a[i]);
  }
  long long ans = go(0, 0);
  ans = ans * my_pow(my_pow(n, k), mod - 2) % mod;
  cout << ans << endl;
}
