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 //////////////////// const BigNumber = require('bignumber.js'); const comparison = (A,B) => A.comparedTo(B); const arraySum = (A) => A.reduce((sum, curr) => curr.plus(sum), new BigNumber('0')); const maxTransform = (A) => { const B = []; for (let k = 0; k < A.length; k++) { for (let i = 0; i < (A.length - k); i++) { const j = i + k; const slice = A.slice(i, j+1); slice.sort(comparison); B.push(slice.pop()); } } return B; }; function solve(A) { const maxA = maxTransform(A); const maxB = maxTransform(maxA); return arraySum(maxB).modulo(new BigNumber('1000000007')); // Return the sum of S(S(A)) modulo 10^9+7. } function main() { var n = parseInt(readLine()); A = readLine().split(' '); A = A.map(v => new BigNumber(v)); var result = solve(A); process.stdout.write("" + result + "\n"); }