import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static int solve(int[] A) { int out[] = S(S(A)); long s = 0; for (int i = 0; i < out.length; i++) { s += out[i] % 1000000007; } return Math.round(s % 1000000007); } static int[] S(int[] A) { List B = new ArrayList(); for (int k = 0; k < A.length; k++) { for (int i = 0; i < A.length-k; i++) { int j = i + k; int max = 0; int imax = 0; for (int s = i; s <= j; s++) { if (A[s] > max) { max = A[s]; imax = s; } } B.add(A[imax]); } } int[] arB = new int[B.size()]; for (int ib = 0; ib < B.size(); ib++) { arB[ib] = B.get(ib); } return arB; } 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(); } }