N = gets.to_i A = gets.split.map(&:to_i) L = [] R = [] min_v = Float::INFINITY 0.upto(N - 1) do |i| a = A[i] min_v = a if min_v > a L[i] = min_v end min_v = Float::INFINITY (N - 1).downto(0) do |i| a = A[i] min_v = a if min_v > a R[i] = min_v end ans = Float::INFINITY 1.upto(N - 2) do |i| a = A[i] l = L[i - 1] r = R[i + 1] next if l > a next if r > a v = a + l + r ans = v if ans > v end if ans == Float::INFINITY puts -1 else puts ans end