#include #include // for max_element #include // for less #include // for cout, endl #include // for vector using namespace std; int maxvalue( vector A , int i , int j ){ int maximo = A[i]; int maximo1,maximo2; i++; for( ;i<=j;i++ ){ maximo1 = A[i]; maximo2 = A[j]; if(maximo1>maximo2){ if(maximo1>maximo){ maximo = maximo1; } }else{ if(maximo2>maximo){ maximo = maximo2; } } j--; } return maximo; } int solve(vector A) { unsigned long long total = 0; vector B; vector C; B.clear(); C.clear(); int j; int sizeA , sizeB; int maximo; sizeA = A.size(); for (int k = 0; k < (sizeA) ;k++){ for ( int i = 0 ; i<(sizeA -k); i++ ){ j = i+k; maximo = maxvalue( A , i, j ); B.push_back(maximo); } } sizeB = B.size(); for (int k = 0; k < (sizeB) ;k++){ for ( int i = 0 ; i<(sizeB -k); i++ ){ j = i+k; maximo = maxvalue( B , i,j ); total = (total + maximo)%1000000007; //C.push_back(maximo); } } return total; // Return the sum of S(S(A)) modulo 10^9+7. } int main() { int n; unsigned long long total =0; 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; }