#include <bits/stdc++.h>

using namespace std;

typedef long long lli;
#define LF '\n'

vector<lli> v;
vector<lli> p;
lli n;
lli q=2,d=3;

lli get(lli l,lli r){
    if (r<l)r+=n;
    return p[r-1]-p[l-1];
}

lli f(lli a){
    if (a>n)a-=n;
    return a;
}

bool check(lli x,lli y){
    lli z = d;
    while(f(z+1)!=x && get(y,f(z+1)) <= get(f(z+1),x))z=f(z+1);
    lli s1 = get(x,y);
    lli s2 = get(y,z);
    lli s3 = get(z,x);
    if (min(s2,s3)>=s1){
        d=z;
        return 1;
    }
    if (f(z+1)!=x){
        z=f(z+1);
        s1 = get(x,y);
        s2 = get(y,z);
        s3 = get(z,x);
        if (min(s2,s3)>=s1){
            d=z+1;
            return 1;
        }
    }
    return 0;
}

void upd2(lli &ans,lli &x,lli &y,lli &z,lli a,lli b,lli c)
{
    lli s1 = get(a,b);
    lli s2 = get(b,c);
    lli s3 = get(c,a);
    lli curr  = max(max(s1,s2),s3) - min(min(s1,s2),s3);
    if (curr<ans){
        ans=curr;
        x=a;
        y=b;
        z=c;
    }
}

void upd(lli &ans,lli &x,lli &y,lli &z,lli a)
{
    upd2(ans,x,y,z,a,q,d);
    if (f(d+1)!=a)upd2(ans,x,y,z,a,q,f(d+1));
}

void solve()
{
    cin >> n;
    v.resize(2*n+1);
    for (int i =1;i<=n;i++)cin >> v[i];
    for (int i =n+1;i<=2*n;i++)v[i] = v[i-n];
    p.resize(2*n+1);
    for (int i =1;i<=2*n;i++)p[i] = p[i-1]+v[i];
    lli ans=1e18;
    lli x=1,y=2,z=3;

    for (int i =1;i<=n;i++){
        while(check(i,f(q+1)))q=f(q+1);
        upd(ans,x,y,z,i);
    }
    cout << ans << LF;
    vector<lli> g;
    g.push_back(x);
    g.push_back(y);
    g.push_back(z);
    sort(g.begin(),g.end());
    for (auto to : g)cout << to << " ";
}

int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    solve();
}