#include #include #include std::vector max_transform(const std::vector& A) { std::vector result; const auto K = A.size() - 1; for (size_t k = 0; k < A.size(); ++k) { for (size_t i = 0; i != A.size() - k; ++i) { size_t j = i + k; result.push_back(*std::max_element(A.begin() + i, A.begin() + j + 1)); } } return result; } int main() { int n; std::cin >> n; std::vector A(n); for (int i = 0; i < n; ++i) { std::cin >> A[i]; } auto B = max_transform(max_transform(A)); const unsigned long long Modulo = 1000000007; unsigned long long sum = 0; for (auto b: B) { sum += b; sum %= Modulo; } std::cout << sum << std::endl; return 0; }