import sys def ftrans(A): res = A cur = A while len(cur) > 1: nx = [] for m in range(len(cur)-1): nx.append(max(cur[m], cur[m+1])) res += nx cur = nx return res def solve(A): A = ftrans(A) A = ftrans(A) return sum(A) % (10 ** 9 + 7) # Return the sum of S(S(A)) modulo 10^9+7. if __name__ == "__main__": n = int(input().strip()) A = list(map(int, input().strip().split(' '))) result = solve(A) print(result)