object Solution { def solve(A: Array[Int]): Int = { val sa = for { k <- A.indices i <- 0 until A.length - k j = i + k } yield A.slice(i, j + 1).max val ssa = for { k <- sa.indices i <- 0 until sa.length - k j = i + k } yield sa.slice(i, j + 1).max ssa.foldLeft(0)((acc, x) => (acc + x) % 1000000007) } def main(args: Array[String]) { val sc = new java.util.Scanner (System.in); var n = sc.nextInt(); var a = new Array[Int](n); for(a_i <- 0 to n-1) { a(a_i) = sc.nextInt(); } val result = solve(a); println(result) } }