package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(reader, &n)
h := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &h[i])
}
const mod = 1000000007
ans := int64(0)
for i := 0; i < n; i++ {
ans = (ans + (h[i] - 1)) % mod
}
if n > 1 {
A := make([]int64, n-1)
for i := 0; i < n-1; i++ {
c1 := h[i] - 1
c2 := h[i+1] - 1
if c1 < c2 {
A[i] = c1
} else {
A[i] = c2
}
}
W := make([]int64, n-2)
for i := 0; i < n-2; i++ {
if A[i] < A[i+1] {
W[i] = A[i]
} else {
W[i] = A[i+1]
}
}
S := int64(0)
for j := 0; j < n-1; j++ {
if j == 0 {
S = A[0] % mod
} else {
S = (S*(W[j-1]%mod)%mod + A[j]%mod) % mod
}
ans = (ans + S*(A[j]%mod)%mod) % mod
}
}
fmt.Println(ans)
}