#include using namespace std; int solve(vector A) { // Return the length of the longest possible sequence of moves modulo 10^9+7. int sum; int s = A.size(); long SA1Count = s*(s+1)/2; vector B(SA1Count); for(int i = 0; i < s; ++i) { B[i] = A[i]; } int k, l; k = s; l = 0; for (int i = 1; i < s; ++i) { for (j = 0; j < s - i; ++j, ++k, ++l) { B[k] = max(B[l], B[l+1]); } ++l; } int s = B.size(); long SB1Count = s*(s+1)/2; vector C(SB1Count); for(int i = 0; i < s; ++i) { C[i] = B[i]; } int k, l; k = s; l = 0; for (int i = 1; i < s; ++i) { for (j = 0; j < s - i; ++j, ++k, ++l) { C[k] = max(C[l], C[l+1]); } ++l; } sum = 0; for( int i = 0; i < C.size(); ++i) { sum = (sum + C[i]) %(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; }