#include <iostream>
#include <stdio.h>
#include <string>
#include <math.h>

using namespace std;

long long int f(int niz[],int k,int n){
	int zbir=0;
	if(k==0){
		for (int i=0; i<n; i++) 
			zbir+=niz[i];
	return zbir;
	}else if(k==1){
		for (int i=0; i<n; i++) 
        zbir += (niz[i] * (i+1) * (n-i)); 
        return zbir;
	}else{
		for (int i=0; i<n; i++) 
			zbir+=niz[i]; 
        zbir*=7*k;
        return zbir;
	}
	
	
}
int main(int argc, char** argv) {
	int n , k;
	scanf("%d %d",&n,&k);
	int a[n];
	for(int i=0;i<n;i++){
		scanf("%d",&a[i]);
	}
	long long zbir=f(a,k,n)%(long long)(pow(10,9)+7);
	printf("%d",zbir);
	return 0;
}