#include using namespace std; #define int long long #define ii pair #define app push_back #define all(a) a.begin(), a.end() #define bp __builtin_popcountll #define ll long long #define mp make_pair #define f first #define s second #define Time (double)clock()/CLOCKS_PER_SEC signed main() { #ifdef HOME freopen("input.txt", "r", stdin); #else #define endl '\n' ios_base::sync_with_stdio(0); cin.tie(0); #endif int n; cin >> n; vector a(n); for (int i = 0; i < n; ++i) cin >> a[i]; const int INF = 1e18; int ans = INF; vector l1(n,INF), l2(n,INF), r1(n,INF), r2(n,INF); //1 - less set ms; for (int i = 0; i < n; ++i) { ms.insert(a[i]); auto t = ms.find(a[i]); if (a[i] != *ms.rbegin()) { l2[i] = *next(t); } if (*ms.begin() < a[i]) { l1[i] = *ms.begin(); } } ms.clear(); for (int i = n - 1; i >= 0; --i) { ms.insert(a[i]); auto t = ms.find(a[i]); if (a[i] != *ms.rbegin()) { r2[i] = *next(t); } if (*ms.begin() < a[i]) { r1[i] = *ms.begin(); } } for (int i = 0; i < n; ++i) { //cout << i << ' ' << l2[i] << ' ' << r2[i] << ' ' << a[i] << endl; ans = min(ans, l1[i]+r1[i]+a[i]); ans = min(ans, l2[i]+r2[i]+a[i]); } if (ans == INF) cout << -1 << endl; else cout << ans << endl; }