#include using namespace std; void MaxTransform(const vector& A, vector& B) { int sum = 0; int n = A.size(); for (int k = 0; k < n; ++k) { int n1 = n - k; for (int i = 0; i < n1; ++i) { int maxel = A[i]; int endj = i + k + 1; for (int j = i + 1; j < endj; ++j) { if (A[j] > maxel) maxel = A[j]; } B.push_back(maxel); } } } int solve(vector A) { vector B; vector C; MaxTransform(A, B); MaxTransform(B, C); // Return the length of the longest possible sequence of moves modulo 10^9+7. int num = C.size(); long long sum = 0; for (int i = 0; i < num; ++i) { sum = (sum + C[i]) % 1000000007L; } //fprintf(stdout, "%d\n", (int)sum); 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; }