process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("\n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function solve(A) { // Return the sum of S(S(A)) modulo 10^9+7. S(A, A.length); return S(A, A.length); } function S(A, len) { var sum = A[0]; for (var i = 1; i < len; i++) { for (var j = i; j >= 1; j--) { var j2 = j - 1; var i2 = i - 1; var dest = j*len-(j*(j+1)/2) + i; var compare = j2*len-(j2*(j2+1)/2) + i2; var max = Math.max(A[i], A[compare]); sum += max; A[dest] = max; } sum += A[i]; } return sum % (1000000000 + 7); } function main() { var n = parseInt(readLine()); a = readLine().split(' '); a = a.map(Number); var result = solve(a); process.stdout.write("" + result + "\n"); }