#include <iostream>
#include <iomanip>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <algorithm>


using namespace std;
#define ll long long
#define endl '\n'
#define itn int

const long long oo=1000000000000;
const long long N=3000005;

//ll tree_mx[4*N];
//ll tree_mn[4*N];
ll tree[4*N];
ll a[N];
//void build_mx(ll v,ll l,ll r)
//{
//    if(l==r)tree_mx[v]=a[l];
//    else
//    {
//
//        ll mid=(l+r)/2;
//        build_mx(2*v,l,mid);
//        build_mx(2*v+1,mid+1,r);
//        tree_mx[v]=max(tree_mx[v*2],tree_mx[2*v+1]);
//    }
//
//}void build_mn(ll v,ll l,ll r)
//{
//    if(l==r)tree_mn[v]=a[l];
//    else
//    {
//
//        ll mid=(l+r)/2;
//        build_mn(2*v,l,mid);
//        build_mn(2*v+1,mid+1,r);
//        tree_mn[v]=min(tree_mn[v*2],tree_mn[2*v+1]);
//    }
//
//}
void build(ll v,ll l,ll r)
{
    if(l==r)tree[v]=a[l];
    else
    {

        ll mid=(l+r)/2;
        build(2*v,l,mid);
        build(2*v+1,mid+1,r);
        tree[v]=(tree[v*2]+tree[2*v+1]);
    }

}

ll get(ll v,ll l,ll r,ll ql,ll qr)
{
    if(l>=ql && r<=qr)return tree[v];
    if(r<ql || l>qr)return 0;
    ll mid=(l+r)/2;

    return (get(2*v,l,mid,ql,qr)+get(2*v+1,mid+1,r,ql,qr));

}
//ll get_mx(ll v,ll l,ll r,ll ql,ll qr)
//{
//    if(l>=ql && r<=qr)return tree_mx[v];
//    if(r<ql || l>qr)return 0;
//    ll mid=(l+r)/2;
//
//    return max(get_mx(2*v,l,mid,ql,qr),get_mx(2*v+1,mid+1,r,ql,qr));
//
//}ll get_mn(ll v,ll l,ll r,ll ql,ll qr)
//{
//    if(l>=ql && r<=qr)return tree_mn[v];
//    if(r<ql || l>qr)return oo;
//    ll mid=(l+r)/2;
//
//    return min(get_mn(2*v,l,mid,ql,qr),get_mn(2*v+1,mid+1,r,ql,qr));
//
//}

int main()
{

//    ios_base::sync_with_stdio(0);
//    cin.tie(0);
//    cout.tie(0);

//
//    ll test;
//    cin>>test;
//    while(test--)
    {

        ll n;
        cin>>n;
        ll xx=0,yy=0,zz=0;
        for(itn i=0; i<n; i++)
        {

            cin>>a[i];
        }for(itn i=n; i<2*n; i++)
        {
            a[i]=a[i-n];
        }
        ll x,y,z;
        ll mn=oo;
        build(1,0,2*n);
        for(itn i=0; i<n; i++)
        {
            x=i;
            for(int j=x+1; j<n+i-1; j++)
            {
                y=j;

                for(itn u=j+1; u<n+i; u++)
                {


                    z=u;
                    ll p;
                    ll pp;
                    //cout<<x<<" "<<y<<" "<<z<<endl;
                    p=get(1,0,2*n,x,y-1);
//                    cout<<p<<endl;
                   // cout<<x<<" "<<y<<" "<<get_mx(1,0,2*n,x,y-1)<<" "<<get_mn(1,0,2*n,x,y-1)<<endl;

                    p=max(p,get(1,0,2*n,y,z-1));
//                    cout<<p<<endl;
                    p=max(p,get(1,0,2*n,z,n+x-1));
//                    cout<<p<<endl;;
                    pp=get(1,0,2*n,x,y-1);
//                    cout<<p<<endl;
                   // cout<<x<<" "<<y<<" "<<get_mx(1,0,2*n,x,y-1)<<" "<<get_mn(1,0,2*n,x,y-1)<<endl;

                    pp=min(pp,get(1,0,2*n,y,z-1));
//                    cout<<p<<endl;
                    pp=min(pp,get(1,0,2*n,z,n+x-1));
//                    cout<<p<<endl;;
                    if(mn>p-pp)
                    {

                        mn=p-pp;
                        xx=x;
                        yy=y;
                        zz=z;
                    }
                }
            }

        }
        cout<<mn<<endl;
        cout<<xx+1<<" "<<yy+1<<" "<<zz+1;


    }

}
