#include <bits/stdc++.h>

using namespace std;
long long int matrix[6][6][6];
int summ(long long int mat[6][6][6],int c,int n,int k)
{
    int wsum=0;
    for(int i=0;i<=n;i++)
    {
        for(int j=0;j<=k;j++)
        {
            wsum+=mat[i][j][c];
        }
    }
    return wsum;
}
int main()
{
    std::ios::sync_with_stdio(false);
    int n,k,sum;
    sum=0;
    vector <long long int> arr;
    vector <int> sums;
    cin>>n>>k;
    for(int i=0;i<n;i++)
        {
            int x;
            cin>>x;
            arr.push_back(x);
            sum+=x;
            sum=sum%(1000000007);
        }
    if(k==0)
    {
        cout<<sum;
        return 0;
    }
    int cnt=n/2;
    if((n%2)!=0)
    {
        cnt++;
    }

    sums.push_back(sum);
    for(int i=1;i<cnt;i++)
    {
        sum=sum-arr[i-1]-arr[n-i];
        sum =sum%(1000000007);
        sums.push_back((sum+sums[i-1])%(1000000007));
    }
    for(int i=(n/2-1);i>=0;i--)
    {
        sums.push_back(sums[i]);
    }
    if(k==1)
    {
        long long int fsum=0;
        for(int i=0;i<n;i++)
        {
            fsum+=sums[i];
            fsum=fsum%(1000000007);
        }
        cout<<fsum;
        return 0;
    }
    for(int i=0;i<6;i++)
    {
        for(int j=0;(j+i)<6;j++)
        matrix[i][j][0]=1;
    }
    for (int c=1;c<6;c++){
    for(int i=0;i<6;i++)
    {
        for(int j=0;(j+i)<6;j++)
        {
            matrix[i][j][c] = summ(matrix,c-1,i,j);
        }
    }}
    long long int fsum=0;
    for(int i=0,j=(n-1);j>=0;j--,i++)
    {
        fsum+=arr[i]*matrix[i][j][k];
        fsum=fsum%(1000000007);
    }
    cout<<fsum;
    return 1;
}