#include <bits/stdc++.h>

#define ll long long

using namespace std;

const int mod = 1e9 + 7;

int add(int a, int b) {

    a += b;
    if(a >= mod)
        a -= mod;
    return a;
}

int sub(int a, int b) {
    
    return add(a, mod - b);
}

int mul(int a, int b) {

    return (ll)a * b % mod;
}

int main() {

    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n, k;
    cin >> n >> k;

    int arr[n], pre[n];
    for(int i = 0; i < n; i++) {
        cin >> arr[i];
        pre[i] = add((i ? pre[i - 1] : 0), arr[i]);
    }

    int sol[n][n], suf[n][n];
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            sol[i][j] = 0;
            suf[i][j] = 1;
        }
    }
    sol[0][n - 1] = 1;

    for(int cnt = 0; cnt < k; cnt++) {
        int new_suf[n][n];
        for(int i = 0; i < n; i++) {
            for(int j = n - 1; j >= i; j--) {
                sol[i][j] = suf[i][j];

                new_suf[i][j] = add(sol[i][j], sub(add((i ? new_suf[i - 1][j] : 0), (j < n - 1 ? new_suf[i][j + 1] : 0)), (i && j < n - 1 ? new_suf[i - 1][j + 1] : 0)));
            }
        }

        for(int i = 0; i < n; i++)
            for(int j = 0; j < n; j++)
                suf[i][j] = new_suf[i][j];
    }

    int ans = 0;
    for(int i = 0; i < n; i++)
        for(int j = i; j < n; j++)
            ans = add(ans, mul(sol[i][j], sub(pre[j], (i ? pre[i - 1] : 0))));
    cout << ans << endl;
    return 0;
}