#include <bits/stdc++.h>

using namespace std;

long long  zbir=0;
vector <int> pom;

void Rekurzija (vector <int> vec, int k)
{
    
    if (k==1)
    {
        for(int i=0;i<vec.size();i++)
       {
           zbir=zbir+vec[i]*(vec.size()-i)*(i+1);
           long long  dek=1000000007;
           if (zbir>dek)
           {
               zbir=zbir%dek;
           }
       }
       return;
    }
    if (k>=2)
    {
        for (int i=0;i<vec.size();i++)
       {
           for (int j=0;j<vec.size()-i;j++)
           {
               pom.clear();
               for (int k=i;k<=i+j;k++)
               {
                   pom.push_back(vec[k]) ;
               }
               Rekurzija (pom,k-1);
           }
       }
    }
    
}


int main()
{
   int n;
   int k;
   long long  dek=1000000007;
   cin>>n>>k;
   vector <int> a;
   int d;
   for (int i=0;i<n;i++)
   {
       cin>>d;
       a.push_back(d);
       zbir=zbir+d;
   }
   if (k==0)
   {
       if (zbir>dek)
           {
               zbir=zbir%dek;
           }
       cout<<zbir;
       return 0;
   }
   zbir=0;
   if (k==1)
   {
       for (int i=0;i<n;i++)
       {
           zbir=zbir+a[i]*(n-i)*(i+1);
           if (zbir>dek)
           {
               zbir=zbir%dek;
           }
       }
       cout<<zbir;
       
       return 0;
   }
   zbir=0;
   Rekurzija(a,k);
   cout<<zbir;
}