import java.io.BufferedReader; import java.io.Closeable; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; public class HR1111201709 { private static int max(int[] array, int i, int j) { int max = array[i]; for (int index = i + 1; index <= j; index++) max = Integer.max(max, array[index]); return max; } private static final long mod = 1000000007l; private static long S(int[] array, boolean b) { int index = array.length; long sum = 0; for (int k = 0; k < index; k++) { for (int i = 0; i < index - k; i++) { sum += max(array, i, i + k) % mod; } } return sum % mod; } private static int[] S(int[] array) { int index = array.length; int start = 0; int[] barray = new int[((index * (index + 1)) / 2)]; for (int k = 0; k < index; k++) { for (int i = 0; i < index - k; i++) { barray[start++] = max(array, i, i + k); } } return barray; } private static void solve(final Input input, final PrintWriter writer) throws Exception { int n = input.nextInt(); int[] array = new int[n]; for (int i = 0; i < n; i++) { array[i] = input.nextInt(); } int[] barray = S(array); long sum = S(barray, true); writer.println(sum); } public static void main(String[] args) throws Exception { try (final PrintWriter writer = new PrintWriter(System.out); final Input input = new Input(new BufferedReader(new InputStreamReader(System.in)))) { solve(input, writer); } } private static final class Input implements Closeable { private final BufferedReader bufferedReader; private final static StringBuilder stringBuilder = new StringBuilder(); private final static String SEPERATOR = " \n\r\t"; public Input(final BufferedReader bufferedReader) { this.bufferedReader = bufferedReader; } public String next() throws IOException { stringBuilder.setLength(0); while (true) { int c = bufferedReader.read(); if (c == -1) { return null; } if (SEPERATOR.indexOf(c) == -1) { stringBuilder.append((char) c); break; } } while (true) { int c = bufferedReader.read(); if (c == -1 || SEPERATOR.indexOf(c) != -1) { break; } stringBuilder.append((char) c); } return stringBuilder.toString(); } public int nextInt() throws IOException { return Integer.parseInt(next(), 10); } @Override public void close() throws IOException { bufferedReader.close(); } } }