#include<iostream>

using namespace std;
int l,j,m,i;

int ak0(int n,int* a,int zbir)
{
	for(i=0;i<n;i++)
	{
		zbir=zbir+a[i];
		
	}
//	cout<<endl<<"zbir: "<<zbir<<endl;
	return zbir;
}

int skz1(int n,int* a,int k,int zbir)//smanji k za 1
{
	k=k-1;	
	int b[n];
	for(l=0;l<n;l++)
		{
//			cout<<"sledeci niz:"<<endl;
			for(j=1;j<=n-l;j++)
			{
//				cout<<endl<<"niz:"<<endl;
				for(m=0,i=l;m<j;m++,i++)
				{
					b[m]=a[i];
//					cout<<a[i]<<", ";
				}
				if(k>0)
				{
					zbir=zbir + skz1(m,b,k,zbir);
				}
				if(k==0)
				{
					zbir=ak0(m,b,zbir);
				}
							
			}
			
		}
	return zbir;	
}






int main()
{
	
/*
	n- broj elemenata niza a
		
*/
//UNOS PODATAKA
	int n,k,i,j,l,m;
	cin >> n >> k;
	if(n<1 || 2*10000<n)
	{
		return 0;
	}
	if(k<0 || 2*10000<k)
	{
		return 0;
	}
	int a[n];
	for(i = 0;i<n;i++)
	{
		cin >> a[i];
		if(a[i]<0 || 1000000000<a[i])
		{
			return 0;
		}
	}
//IZRADA ZADATKA
	
/*
	j-
	i-ispisivanje podataka
*/	
	int zbir=0;
	if(k>0)
	{
		zbir=skz1(n,a,k,zbir);
	}
	if(k==0)
	{
		zbir=ak0(n,a,zbir);
	}
	
		
//	cout<<"zbir je:"<<zbir;
	int o;
	o=zbir%1000000007;
	cout<<o;

 	return 0;
}