#include <bits/stdc++.h>
#define pb push_back
#define pf push_front
#define fi first
#define se second

using namespace std;
typedef long long ll;

vector<vector<ll>> v1;
vector<vector<ll>> v2;
vector<ll> vv;
ll m=1000000007;

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	ll n, k, x;
	cin >> n >> k;
	for(ll i=0; i<n; i++)
    {
        cin >> x;
        vv.pb(x);
    }
    v1.pb(vv);
    vv.clear();
    for(ll i=0; i<k; i++)
    {
        if(i%2==0)
        {
            for(ll j=0; j<v1.size(); j++)
            {
                for(ll a=0; a<v1[j].size(); a++)
                {
                    for(ll b=a; b<v1[j].size(); b++)
                    {
                        vv.pb(v1[j][b]);
                        v2.pb(vv);
                    }
                    vv.clear();
                }
            }
            v1.clear();
        }
        else
        {
            for(ll j=0; j<v2.size(); j++)
            {
                for(ll a=0; a<v2[j].size(); a++)
                {
                    for(ll b=a; b<v2[j].size(); b++)
                    {
                        vv.pb(v2[j][b]);
                        v1.pb(vv);
                    }
                    vv.clear();
                }
            }
            v2.clear();
        }
    }
    ll z=0;
    for(ll i=0; i<v1.size(); i++)
    {
        for(ll j=0; j<v1[i].size(); j++)
        {
            z+=v1[i][j];
            if(z>=m)
            {
                z%=m;
            }
        }
    }
    for(ll i=0; i<v2.size(); i++)
    {
        for(ll j=0; j<v2[i].size(); j++)
        {
            z+=v2[i][j];
            if(z>=m)
            {
                z%=m;
            }
        }
    }
    cout << z << "\n";

}