import numpy as np N = int(input()) A = np.array(list(map(int, input().split()))) L_min_Acc = np.minimum.accumulate(A).tolist() R_min_Acc = np.minimum.accumulate(A[::-1])[::-1].tolist() L_max_Acc = np.maximum.accumulate(A).tolist() R_max_Acc = np.maximum.accumulate(A[::-1])[::-1].tolist() ans = float('inf') for i in range(1, N - 1): if A[i] > L_min_Acc[i - 1] and A[i] > R_min_Acc[i + 1]: ans = min(ans, L_min_Acc[i - 1] + A[i] + R_min_Acc[i + 1]) if A[i] < L_max_Acc[i - 1] and A[i] < R_max_Acc[i + 1]: ans = min(ans, L_max_Acc[i - 1] + A[i] + R_max_Acc[i + 1]) print(ans if ans != float('inf') else -1)