#include <bits/stdc++.h>

using namespace std;

long long a[200005];
long long b[200005];
long long moduo=1000000007;

int gcdExtended(long long n,long long m,long long* x,long long* y){
    if(n==0){
        *x=0;
        *y=1;
        return m;
    }
    long long x1,y1;
    long long gcd=gcdExtended(m%n,n,&x1,&y1);
    *x=y1-(m/n)*x1;
    *y=x1;
    return gcd;
}

long long inverz(long long n){
    long long x,y;
    long long m=moduo;
    long long g=gcdExtended(n,m,&x,&y);
    return (x+moduo)%moduo;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cerr.tie(0);
    long long n,k,i,p,inv;
    cin>>n>>k;
    for(i=1;i<n+1;i++){
        cin>>a[i];
    }
    b[0]=1;
    for(i=1;i<n;i++){
        inv=inverz(i);
        b[i]=(b[i-1]*(k+i))%moduo;
        b[i]=(b[i]*inv)%moduo;
    }
    long long s=0;
    for(i=1;i<n+1;i++){
        p=(a[i]*b[i-1])%moduo;
        p=(p*b[n-i])%moduo;
        s=(s+p)%moduo;
    }
    cout<<s;
    return 0;
}