#include #include #include #include #include #include #include int count = 2; int solve(int A_size, int* A) { // Return the sum of S(S(A)) modulo 10^9+7. int k, i, j, l, x, max; int *b = malloc(sizeof(int) * (A_size * (A_size+1)) / 2); int p = 0; static int sum; sum = 0; for( k = 0; k < A_size; k++ ) { for( i = 0; i < A_size-k; i++ ) { max = A[i]; j = i + k; for( l = i ; l <= j; l++ ) { if( max < A[l] ) max = A[l]; } b[p++] = max; sum = (sum + max) % 1000000007; } } --count; if( count == 1 ) { solve( p, b ); } return sum; } int main() { int n; scanf("%i", &n); int *A = malloc(sizeof(int) * n); for (int A_i = 0; A_i < n; A_i++) { scanf("%i",&A[A_i]); } int result = solve(n, A); printf("%d\n", result); return 0; }