#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=200050;
const ll mod=1e9+7;
int add(ll a,ll b){a+=b;return a>=mod?a-mod:a;}
void ckadd(ll&a,ll b){a=add(a,b);}
ll sub(ll a,ll b){a-=b;return a<0?a+mod:a;}
void cksub(ll&a,ll b){a=sub(a,b);}
ll mul(ll a,ll b){return (ll)a*b%mod;}
void ckmul(ll&a,ll b){a=mul(a,b);}
ll powmod(ll x,ll k){ll ans=(ll)1;for(;k;k>>=1,ckmul(x,x))if(k&1)ckmul(ans,x);return ans;}
ll inv(ll x){return powmod(x,(ll)mod-2);}
int n,k;
ll a[N];
ll F[N],I[N];
ll binom(ll n, ll k){ return mul(F[n],mul(I[k],I[n-k]));}
void calc()
{
	F[0]=1;
	for(int i=1;i<N;i++) F[i]=mul(F[i-1],i);
	I[N-1]=inv(F[N-1]);
	for(int i=N-2;~i;i--) I[i]=mul(I[i+1],i+1);
}
int main(){
    calc();
    scanf("%i %i",&n,&k);
    //n=200000,k=200000;
    for(int i=0;i<n;i++)scanf("%lld",&a[i]);
    //for(int i=0;i<n;i++)a[i]=1000000000;
    ll ans=0;
    for(int i=0;i<n;i++){
        ckadd(ans,mul(mul(binom((ll)(i+k),(ll)k),binom((ll)(n-i+k-1),(ll)k)),a[i]));
        //printf("%i ",mul(binom(i+k,k),binom(n-i+k-1,k)));
    }
    //printf("\n");
    printf("%lld",ans);
    return 0;
}