using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { public static int Max(int[] A, int i, int j) { int max = A[i]; for(i = i + 1;i<=j ;i++) { if (A[i] > max) max = A[i]; } return max; } public static int[] S(int[] A) { // Return the sum of S(S(A)) modulo 10^9+7. List<int> B = new List<int>(); for (var k = 0; k < A.Length; k++) { for (var i = 0; i < A.Length - k; i++) { var j = i + k; B.Add(Max(A, i, j)); } } return B.ToArray(); } static int solve(int[] A) { int modulo = (int)Math.Pow(10, 9) + 7; var result = S(S(A)); int sum = 0; for (var i = 0;i < result.Length; i++) { sum += result[i]; sum = (int) sum % modulo; } return sum; } static void Main(String[] args) { int n = Convert.ToInt32(Console.ReadLine()); string[] a_temp = Console.ReadLine().Split(' '); int[] a = Array.ConvertAll(a_temp,Int32.Parse); int result = solve(a); Console.WriteLine(result); } }