#!/bin/python3 import sys def sub_max(A): B = [[0 for x in range(len(A))] for y in range(len(A))] for i in range(0, len(A)): for j in range(i, len(A)): if i==j: B[i][j] = A[i] else: B[i][j]=max(B[i][j-1], A[j]) return B def transform(A, C, start): B = sub_max(A) for k in range(start, len(A)): for i in range(0, len(A)-k): j = i + k C.append(B[i][j]) return C def solve(A): # Return the sum of S(S(A)) modulo 10^9+7. C = [] A_tr = transform(A,C,0) D = [] A_trtr = transform(A_tr,D,0) return sum(A_trtr) if __name__ == "__main__": n = int(input().strip()) A = list(map(int, input().strip().split(' '))) result = solve(A) print(result)