#include #include #include //#include #include using namespace std; void max_transform(vector &vec); int main() { size_t n; cin >> n; vector data; while (n--) { int x; cin >> x; data.push_back(x); } max_transform(data); max_transform(data); size_t sum = accumulate(data.begin(), data.end(), 0, [](const size_t &a, const size_t &b) { return (a + b) % 1000000007; } ); cout << sum << endl; return 0; } void max_transform(vector &vec) { size_t len = vec.size(); for (size_t k = 1; k < len; k++) { for (size_t i = 0; i < len - k; i++) { int max = vec[(k - 1) * (len - (k - 2) / 2) + i]; if (max < vec[k + i]) max = vec[k + i]; vec.push_back(max); } } }