#include <bits/stdc++.h>
using namespace std;

const long long MX=1e6+10;
const long long INF=1e18;

long long a1,a2,a3,ans=INF;
long long a[MX],pr[MX];
long long n;

void upd2(long long x,long long y,long long z)
{
    if(!(x<y && y<z))
    {
        return;
    }

    long long s1=pr[x-1]+(pr[n]-pr[z-1]);
    long long s2=pr[y-1]-pr[x-1];
    long long s3=pr[z-1]-pr[y-1];

    if((max({s1,s2,s3})-min({s1,s2,s3}))<ans)
    {
        ans=max({s1,s2,s3})-min({s1,s2,s3});
        a1=x;
        a2=y;
        a3=z;
    }
}

void upd(long long o1,long long o2,long long l)
{
    upd2(o1+1,l+1,o2+1);
    upd2(o1+1,l,o2+1);
}

int main()
{
    cin.tie(0);
    ios_base::sync_with_stdio(0);

    cin>>n;

    for(long long i=1;i<=n;i++)
    {
        cin>>a[i];
        pr[i]=pr[i-1]+a[i];
    }

    for(long long i=0;i<n-2;i++)
    {
        long long l=i,s1=0,s2=a[i+1];
        for(long long j=i+2;j<n;j++)
        {
            s2+=a[j];
            while(s1+a[l+1]<=s2)
            {
                s1+=a[l+1];
                s2-=a[l+1];
                l++;
            }

            upd(i,j,l);
        }
    }

    cout<<ans<<"\n"<<a1<<" "<<a2<<" "<<a3<<"\n";
    return 0;
}
