package main
import (
"bufio"
"fmt"
"io"
"os"
)
func max(a, b int64) int64 {
if a > b {
return a
}
return b
}
func main() {
data, _ := io.ReadAll(os.Stdin)
idx := 0
nextInt := func() int64 {
for idx < len(data) && (data[idx] == ' ' || data[idx] == '\n' || data[idx] == '\r' || data[idx] == '\t') {
idx++
}
var sign int64 = 1
if data[idx] == '-' {
sign = -1
idx++
}
var val int64
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int64(data[idx]-'0')
idx++
}
return val * sign
}
n := int(nextInt())
a := make([]int64, n+1)
for i := 1; i <= n; i++ {
a[i] = nextInt()
}
suf := make([]int64, n+2)
for i := n; i >= 1; i-- {
suf[i] = max(suf[i+1], a[i])
}
pref := int64(0)
ans := int64(1 << 62)
nn := int64(n)
for r := 0; r < n; r++ {
q := max(pref, suf[r+1])
cur := q*nn + int64(r)
if cur < ans {
ans = cur
}
v := a[r+1] - 1
if v > pref {
pref = v
}
}
out := bufio.NewWriter(os.Stdout)
fmt.Fprint(out, ans)
out.Flush()
}