#include<stdio.h>
#define N 6000001
long a[N];
long max(long b,long c)
{if(c<b)
return b;
return c;}
long get(long l,long r,long *p,long *q)
{long mid=(l+r)/2,bestL,bestR,suf=0,pre=0,maxSuf=-1000,maxPre=-1000,i;
if(l==r)
return a[l];
bestL=get(l,mid,p,q);
bestR=get(mid+1,r,p,q);
for(i=mid;i>=l;i--)
{suf+=a[i];
if(maxSuf<suf)
{maxSuf=suf;
(*p)=i;}}
for(i=mid+1;i<=r;i++)
{pre+=a[i];
if(maxPre<pre)
{maxPre=pre;
(*q)=i;}}
return max(bestL,max(bestR,maxPre+maxSuf));}
int main()
{long n,i,p=0,q=0;
freopen("ssm.in","r",stdin);
freopen("ssm.out","w",stdout);
scanf("%ld\n",&n);
for(i=1;i<=n;i++)
scanf("%ld",&a[i]);
printf("%ld %ld %ld\n",get(1,n,&p,&q),p,q);
fclose(stdin);
fclose(stdout);
return 0;}