import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { // Function used to find the max integer from A_i to A_j static int max(int[] A, int i, int j) { // Create an ArrayList with A values and sort the ArrayList ArrayList iToj = new ArrayList(); while (i <= j) { iToj.add(A[i]); i++; } Collections.sort(iToj, Collections.reverseOrder()); return iToj.get(0); } // Function used to do a max_tranform of A static int[] max_transform(int[] A) { // Follow the algorithm ArrayList B = new ArrayList(); for (int k = 0; k < A.length; k++) { for (int i = 0; i < A.length - k; i++) { int j = i + k; B.add(max(A,i,j)); } } // transform to int[] and return int[] returning = new int[B.size()]; for (int i = 0; i < returning.length; i++) { returning[i] = B.get(i); //System.out.println(returning[i]); } //System.out.println("\n\n"); return returning; } static int solve(int[] A) { // Return the sum of S(S(A)) modulo 10^9+7. int sum = 0; for (int i : max_transform(max_transform(A))) sum += i; return sum % ((int) Math.pow(10, 9) + 7); } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); int[] a = new int[n]; for(int a_i = 0; a_i < n; a_i++){ a[a_i] = in.nextInt(); } int result = solve(a); System.out.println(result); in.close(); } }