#include #include #include #include #include #include using namespace std; typedef long long int ll; struct seg{ int seg[(1<<20)]; int k; void init(int n){ for(int i=0;i<(1<<20);i++){ seg[i]=1e9; } for(k=1;k1){ a>>=1; seg[a]=min(seg[2*a],seg[2*a+1]); } } int query(int l,int r){ l+=k; r+=k; int res=1e9; while(l>=1; r>>=1; } if(l==r)res=min(res,seg[l]); return res; } }seg; int main(){ cin.tie(nullptr); ios::sync_with_stdio(false); int n; cin >> n; vector a(n),mi(n,1e9),mii(n,1e9); for(int i=0;i> a[i]; } int res=1e9; for(int i=0;i=0;i--){ mii[i]=a[i]; if(imii[i+1]){ res=min(res,mi[i-1]+a[i]+mii[i+1]); } } seg.init(n); vector> v(n); for(int i=0;i=1e9){ printf("-1\n"); } else{ printf("%d\n",res); } }