#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using i64 = int64_t; using i32 = int32_t; const i64 mod = 1e9 + 7; i64 ipow(i64 a, i64 b) { i64 x = a, y = 1; for (; b > 0; b >>= 1) { if (b & 1) (y *= x) %= mod; (x *= x) %= mod; } return y; } i64 inv(i64 x) { return ipow(x, mod - 2); } i64 fact(i64 x) { static vector f; i64 i = f.size(); if (x >= i) { f.resize(x + 1); for (; i <= x; ++i) { f[i] = i == 0 ? 1 : i * f[i - 1] % mod; } } return f[x]; } i64 perm(i64 n, i64 k) { return k <= n ? fact(n) * inv(fact(n - k)) % mod : 0; } i64 comb(i64 n, i64 k) { return k <= n ? fact(n) * inv(fact(k) * fact(n - k) % mod) % mod : 0; } int main() { i64 n; cin >> n; i64 ans = 0; for (int i = 0; i < n; ++i) { i64 x; cin >> x; ans += comb(n - 1, i) * x % mod; } ans %= mod; cout << ans << endl; return 0; }