using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { static List GetMaxTransform(List list) { var length = list.Count; var newList = new List(); for (int k = 0; k < length; k++) { for (int i = 0; i < length - k; i++) { int j = i + k; int max = list[i]; for(int ii = i + 1; ii <= j; ii++) { if (list[ii] > max) { max = list[ii]; } } newList.Add(max); } } return newList; } static int solve(int n, int[] A) { // Return the sum of S(S(A)) modulo 10^9+7. var list_A = new List(A); var s_s_A_list = GetMaxTransform(GetMaxTransform(list_A)); long hugeSum = 0; foreach(int num in s_s_A_list) { hugeSum += num; } return (int)(hugeSum % 1000000007); } 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(n, a); Console.WriteLine(result); } }