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