#include<bits/stdc++.h>
namespace zcy{
	using namespace std;
	typedef long long ll;
	const int MAXN=2e6+6;
	
	int n;
	ll a[MAXN];
	ll p[MAXN];
	
	ll ceil(ll x,ll y){
		return x/y+bool(x%y);
	}
	
	ll calc(int A,int B,int C){
		ll x=p[B-1]-p[A-1];
		ll y=p[C-1]-p[B-1];
		ll z=p[A+n-1]-p[C-1];
		return max({x,y,z})-min({x,y,z});
	}
	
	int main(){
		ios::sync_with_stdio(0);
		cin.tie(0);
		
		cin>>n;
		for(int i=1;i<=n;i++){
			cin>>a[i];
			a[n+i]=a[i];
			p[i]=p[i-1]+a[i];
		}
		for(int i=1;i<=n*2;i++){
			p[i]=p[i-1]+a[i];
		}
		
		ll ans=1145141919810LL;
        
        int A=1,B=1,C=1;
		
		for(int l=1;l<=n;l++){
			//前面大后面小
			ll lev1=p[n]/3+p[l-1];
			int x1=upper_bound(p,p+n*2+1,lev1)-p;
			ll ned1=lev1+(p[n]-lev1+p[l-1])/2;
			int y1=upper_bound(p,p+n*2+1,ned1)-p;
			
			// clog<<"当前选中区间为["<<l<<","<<x1-1<<"],["<<x1<<","<<y1-1<<"],["<<y1<<","<<l+n-1<<"]    ";
			// clog<<"此时三个区间为"<<p[x1-1]-p[l-1]<<" "<<p[y1-1]-p[x1-1]<<" "<<p[l+n-1]-p[y1-1]<<",calc="<<calc(l,x1,y1)<<"\n";
			
			//区间[l,x1-1],[x1,y1-1],[y1,l+n-1]
			if(l%n!=x1%n&&x1%n!=y1%n&&y1%n!=l%n)if(ans>calc(l,x1,y1)){
				ans=calc(l,x1,y1);
				A=l,B=x1,C=y1;
			}
            y1--;
            if(l%n!=x1%n&&x1%n!=y1%n&&y1%n!=l%n)if(ans>calc(l,x1,y1)){
				ans=calc(l,x1,y1);
				A=l,B=x1,C=y1;
			}
            y1++;
            y1++;
            if(l%n!=x1%n&&x1%n!=y1%n&&y1%n!=l%n)if(ans>calc(l,x1,y1)){
				ans=calc(l,x1,y1);
				A=l,B=x1,C=y1;
			}
			
			//前面小后面大
			ll lev2=p[n]/3+p[l-1];
			int x2=upper_bound(p,p+n*2+1,lev2)-p;
            if(x2>l)x2--;
			ll ned2=lev2+(p[n]-lev2+p[l-1])/2;
			int y2=upper_bound(p,p+n*2+1,ned2)-p;
			
			
			// clog<<"当前选中区间为["<<l<<","<<x2-1<<"],["<<x2<<","<<y2-1<<"],["<<y2<<","<<l+n-1<<"]    ";
			// clog<<"此时三个区间为"<<p[x2-1]-p[l-1]<<" "<<p[y2-1]-p[x2-1]<<" "<<p[l+n-1]-p[y2-1]<<",calc="<<calc(l,x2,y2)<<"\n";
			
			//区间[l,x2-1],[x2,y2-1],[y2,l+n-1]
			if(l%n!=x2%n&&x2%n!=y2%n&&y2%n!=l%n)if(ans>calc(l,x2,y2)){
				ans=calc(l,x2,y2);
				A=l,B=x2,C=y2;
			}
            y2++;
            if(l%n!=x2%n&&x2%n!=y2%n&&y2%n!=l%n)if(ans>calc(l,x2,y2)){
				ans=calc(l,x2,y2);
				A=l,B=x2,C=y2;
			}
            y2--;
            y2--;
            if(l%n!=x2%n&&x2%n!=y2%n&&y2%n!=l%n)if(ans>calc(l,x2,y2)){
				ans=calc(l,x2,y2);
				A=l,B=x2,C=y2;
			}
		}
		A=(A-1)%n+1;
		B=(B-1)%n+1;
		C=(C-1)%n+1;

        ll arr[3]={A,B,C};
        sort(arr,arr+3);

		cout<<ans<<"\n"<<arr[0]<<" "<<arr[1]<<" "<<arr[2]<<endl;
		
		return 0;
	}
}

int main(){
	zcy::main();
	return 0;
}