#include using namespace std; vector maxTransform(vector& vec) { vector res(vec); int s = vec.size(); int comp = 0; for (int i = 1; i < s; i++) { for (int j = i; j < s; j++) { int k = j - i; res.push_back(max(vec[j], res[comp + k])); } comp += s - i + 1; } return res; } int solve(vector A) { // Return the sum of S(S(A)) modulo 10^9+7. vector temp = maxTransform(A); vector res = maxTransform(temp); int sum = 0; for (auto val : res) { sum += val; sum = sum % (static_cast(pow(10,9)) + 7); } return sum; } int main() { int n; cin >> n; vector a(n); for (int a_i = 0; a_i < n; a_i++) { cin >> a[a_i]; } int result = solve(a); cout << result << endl; return 0; }