// TLE? #include #include using namespace std; #include using mint = atcoder::modint1000000007; #include using mpint = boost::multiprecision::cpp_int; int main() { int N; cin >> N; mpint ret = 0; mint prod = 1; const mint d23 = mint(2) / 3; for (int i = 0; i < N; i++) { ret *= 3; // mod とり忘れ int a; cin >> a; prod *= mint(a); ret += (prod * (i == N - 1 ? 1 : d23)).val(); } cout << (ret % mint::mod()) << '\n'; }