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);
    }
}