#include using namespace std; int findMax(int a, int b, vector A){ int max = INT_MIN; for (int i = a; i <= b; i++){ if (A[i] > max){ max = A[i]; } } return max; } int solve(vector A) { // Return the sum of S(S(A)) modulo 10^9+7. vector B; for (unsigned int k = 0; k < A.size(); k++){ for (unsigned int i = 0; i < A.size() - k; i++){ unsigned int j = i + k; B.push_back(findMax(i, j, A)); } } vector C; for (unsigned int k = 0; k < B.size(); k++){ for (unsigned int i = 0; i < B.size() - k; i++){ unsigned int j = i + k; C.push_back(findMax(i, j, B)); } } long sum = 0; for (auto x : C){ sum = (sum + x) % 1000000007; } 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; }