#include<bits/stdc++.h>
#define ll long long
#define MOD 1000000007
using namespace std;
ll N,K,niz[200005],layer[200005],faktorijal[400005];
bool pisi=false;
ll stepen(ll a,ll k){
    if(k==1)
        return a;
    if(k==2)
        return a*a;
    ll ret=1;
    ret=stepen(a,k/2);
    ret=(ret*ret)%MOD;
    if(k%2==1)
        ret*=a;
    ret%=MOD;
    return ret;
}
ll podeli(ll A,ll B){
    return (A*stepen(B,MOD-2))%MOD;
}
ll nadji(ll n,ll k){
    ll A=faktorijal[n+k-1];
    ll B=(faktorijal[n-1]*faktorijal[k])%MOD;
    return podeli(A,B);
}
int main(){
    faktorijal[0]=1;
    for(int i=1;i<=400000;i++)
        faktorijal[i]=(faktorijal[i-1]*i)%MOD;
    ios_base::sync_with_stdio(false);
    memset(layer,0,sizeof(layer));
    cin>>N>>K;
    layer[N]=1;
    if(pisi==false)
        for(int i=1;i<=N;i++)
            cin>>niz[i];
    else
        for(int i=1;i<=N;i++)
            niz[i]=1;
    for(int i=1;i<=N;i++)
        layer[i]=nadji(N-i+1,K);
    ll res=0;
    for(int i=1;i<=N;i++)
        res=(res+((layer[i]*layer[N-i+1])%MOD*niz[i])%MOD)%MOD;
    cout<<res<<endl;
    return 0;
}