//tort-ONI, 2016
/*#include<bits/stdc++.h>
#define N 502
using namespace std;
char a[N][N];
int n,m;
void read()
{
ifstream fin("tort3.in");
fin>>n>>m;
for(int i=1;i<=n;i++)
{fin>>(a[i]+1);
//cout<<a[i]+1<<endl;
}
}
void dynamic()
{
ofstream cout("tort3.out");
int li=-1,c1,c2,i,j,lm[N][N],ii,jj;
while(li)
{
li=0;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
{
if(a[i][j]!='-')
{
lm[i][j]=1;
if(a[i][j]==a[i-1][j] && a[i][j]==a[i-1][j-1] && a[i][j]==a[i][j-1])
lm[i][j]=max(lm[i][j],1+min(lm[i-1][j-1],min(lm[i-1][j],lm[i][j-1])));
if(lm[i][j]>li)
{
li=lm[i][j];
c1=i;
c2=j;
}
}
else lm[i][j]=0;
}
}
if(li) cout<<li<<' '<<c1<<' '<<c2<<'\n';
//strerg
for(ii=c1-li+1;ii<=c1;ii++)
for(jj=c2-li+1;jj<=c2;jj++)
a[ii][jj]='-';
}
}
void dynamic_opt()
{ofstream cout("tort3.out");
int li=0,c1,c2,i,j,lm[N][N],ii,jj;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(a[i][j]!='-')
{
lm[i][j]=1;
if(a[i][j]==a[i-1][j] && a[i][j]==a[i-1][j-1] && a[i][j]==a[i][j-1])
lm[i][j]=max(lm[i][j],1+min(lm[i-1][j-1],min(lm[i-1][j],lm[i][j-1])));
li=max(li,lm[i][j]);
}
}
for(int it=li;it>=0;it--)
{
bool gasit=0;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(lm[i][j]>=it && a[i][j]!='-' && a[i-it+1][j-it+1]!='-' && a[i-it+1][j]!='-' && a[i][j-it+1]!='-')
{
cout<<it<<' '<<i<<' '<<j<<'\n';
for(ii=i-it+1;ii<=i;ii++)
for(jj=j-it+1;jj<=j;jj++)
a[ii][jj]='-';
gasit=1;
}
if(gasit) it++;
}
}
int main()
{
read();
//dynamic();
dynamic_opt();
}*/
//Transport-GM
/*#include<bits/stdc++.h>
using namespace std;
vector <int> G[100002],D[100002];
queue <int> q;
bool viz[100002];
int rasp=1e5,n,m;
void read()
{ int x,y,z;
freopen("transport2.in","r",stdin);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d%d",&x,&y,&z);
G[x].push_back(y);
D[x].push_back(z);
G[y].push_back(x);
D[y].push_back(z);
}
}
bool check(int pivot)
{
int i,p;
memset(viz,0,sizeof(viz));
q.push(1);
viz[1]=1;
while(!q.empty())
{
p=q.front();
for(i=0;i<G[p].size();i++)
if(D[p][i]>=pivot && !viz[G[p][i]])
{
viz[G[p][i]]=1;
q.push(G[p][i]);
}
q.pop();
}
return viz[n];
}
void caut_r(int li, int ls)
{
int m;
if(li<=ls)
{m=(li+ls)/2;
if (check(m))
{
rasp=m;
caut_r(m+1,ls);
}
else
{
caut_r(li,m-1);
}
}
}
int main()
{
read();
caut_r(1,10001);
ofstream cout("transport2.out");
cout<<rasp;
}*/
//taietura-oni 2017
#include<bits/stdc++.h>
#define N 6000000
using namespace std;
int v[N],sum[N],best[N],cmin,Sum,n,ii,j,viz[N];
void read()
{
ifstream fin("ssm.in");
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
}
void dynamic()
{
int i;
sum[0]=0;
for(i=1;i<=n;i++) sum[i]=sum[i-1]+v[i];
cmin=sum[0];
Sum=-N;
for(i=1;i<=n;i++)
{
best[i]=sum[i]-cmin;
if(cmin>sum[i]) {cmin=sum[i];
ii=i;
}
if(best[i]>Sum)
{Sum=best[i];
j=i;
}
}
}
void dynamic_2()
{
Sum=v[1];
int i;
for(i=1;i<=n;i++)
{
best[i]=v[i];
if(best[i]<best[i-1]+v[i])
{
best[i]=best[i-1]+v[i];
}
else ii=i;
if(best[i]>Sum)
{Sum=best[i];
j=i;
}
}
}
int main()
{
read();
dynamic_2();
ofstream cout("ssm.out");
cout<<Sum<<' '<<ii<<' '<<j;
}