package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type Pair struct {
val int
idx int
}
func main() {
reader := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(reader, &n)
a := make([]Pair, n)
for i := 0; i < n; i++ {
fmt.Fscan(reader, &a[i].val)
a[i].idx = i
}
sort.Slice(a, func(i, j int) bool {
return a[i].val < a[j].val
})
active := make([]bool, n)
L := make([]int, n)
counts := make([]int, n+1)
numSegments := 0
maxLoc := 0
bestK := 0
for i := 0; i < n; i++ {
idx := a[i].idx
leftLen := 0
if idx > 0 && active[idx-1] {
leftLen = L[idx-1]
}
rightLen := 0
if idx < n-1 && active[idx+1] {
rightLen = L[idx+1]
}
if leftLen > 0 {
counts[leftLen]--
numSegments--
}
if rightLen > 0 {
counts[rightLen]--
numSegments--
}
newLen := leftLen + rightLen + 1
counts[newLen]++
numSegments++
active[idx] = true
L[idx-leftLen] = newLen
L[idx+rightLen] = newLen
if counts[newLen] == numSegments {
if numSegments > maxLoc {
maxLoc = numSegments
bestK = a[i].val + 1
}
}
}
fmt.Println(bestK)
}