#include<iostream>

using namespace std;

long long a[200000];

void fja(long long b[], long long l, long long n, long long k, long long *rez)
{
	if(k==0)
	{
		long long m=0;
		for(long long i=l; i<n; i++)
		{
			*rez+=b[i];
		}
	}
	else 
	{
		for(long long i=0; i<n; i++)
		{
			for(long long j=i; j<n; j++)
			{
				fja(b, i, j, k-1, rez);
			}
		}
	}
}

int main()
{
	long long n, k, rez=0;
	cin>>n>>k;
	for(long long i=0; i<n; i++)
	{
		cin>>a[i];
	}
	if(k==0)
	{
		for(long long i=0; i<n; i++)
		{
			rez+=a[i]%1000000007;
			rez=rez%1000000007;
		}
	}
	else if(k==1)
	{
		for(long long i=n; i>0; i--)
		{
			rez+=(i*(n-i+1))*a[i-1]%1000000007;
			rez=rez%1000000007;
		}
	}
	else
	{
		fja(a, 0, n, k, &rez);
	}
	cout<<rez;
	return 0;
}