#define _CRT_SECURE_NO_WARNINGS #define _USE_MATH_DEFINES #include using namespace std; #include using namespace atcoder; #define REP(i, n) for(int i = 0; i < (int)n; i++) #define LREP(i, n) for(LL i = 0; i < (LL)n; i++) #define RREP(i, n) for(int i = (int)n-1; i >= 0; i--) #define V(T) vector #define P pair #define LP pair #define T3 tuple #define T4 tuple #define INF 1000000007 #define SIZE 500100 #define MOD 1000000007 typedef long long LL; LL N, K; LL A[SIZE], C[SIZE]; int main() { cin >> N >> K; REP(i, N) cin >> A[i]; LREP(i, N) { if (i == 0) { C[i] = 1; } else { C[i] = (C[i - 1] * (K + i)) % MOD; C[i] = (C[i] * inv_mod(i, MOD)) % MOD; } } LL ans = 0; REP(i, N) { LL c = A[i]; c = (c * C[i]) % MOD; c = (c * C[N - 1 - i]) % MOD; ans = (ans + c) % MOD; } cout << ans << endl; }