#include using namespace std; typedef long long ll; #define rep(i, n) for (ll i = 0; i < n; i++) #define FOR(i, a, b) for (ll i = a; i < b; i++) #define is(a, b) a == b #define sz(v) ll(v.size()) const ll MOD = 1000000007; const ll N_MAX = 200000; void solve(ll N, vector a) { ll fac[N_MAX], finv[N_MAX], inv[N_MAX]; fac[0] = fac[1] = 1; finv[0] = finv[1] = 1; inv[1] = 1; FOR(i, 2, N_MAX) { fac[i] = fac[i-1] * i % MOD; inv[i] = MOD - inv[MOD%i] * (MOD/ i) % MOD; finv[i] = finv[i-1] * inv[i] % MOD; } ll s = 0; rep(i, N) { // cout << (fac[N-1] * (finv[i] * finv[N-i-1] % MOD) % MOD) << endl; s += a[i] * (fac[N-1] * (finv[i] * finv[N-i-1] % MOD) % MOD); s %= MOD; } cout << s << endl; } int main() { ll N; vector a; cin >> N; rep(i, N) { ll tmp; cin >> tmp; a.push_back(tmp); } solve(N, a); return 0; }