#include <iostream>
#include <cstdio>
#include <vector>
#define NMAX 50010
#define pb push_back
using namespace std;
/*class nuss
{
public:
int val, l, r, t;
};*/
//nuss ob;
//vector<nuss> sol;
int N, K, v[NMAX], i, sw, e, s, sum, poz;
int smax, lmax, val, nr, l, r;
void read(void)
{
freopen("secv2.in", "r", stdin);
scanf("%d %d", &N, &K);
for(i = 1; i <= N; ++i)
scanf("%d", &v[i]);
fclose(stdin);
}
/*
inline void add(int z, int x, int c, int v)
{
ob.val = z;
ob.l = x;
ob.r = c;
ob.t = v;
sol.pb(ob);
}
void calc(void)
{
int s = e = 1;
add(v[1], 1, 1, 1);
sum = v[1];
for(i = 2; i <= N; ++i)
{
if((sum + v[i]) > 0)
{
sum += v[i];
e = e + 1;
add(sum, s, e, e - s + 1);
}
else
{
sum = v[i];
s = e = i;
add(v[i], i, i, 1);
}
}
smax = INT_MIN;
lmax = 0;
for(i = 0; i < N; ++i)
if((sol[i].val >= smax) && (sol[i].t > lmax))
smax = sol[i].val, lmax = sol[i].t, poz = i;
}*/
void calc2(void)
{
int s = 0, m = INT_MIN;
for(i = 1; i <= N; ++i)
{
s += v[i];
if(s > m)
{
m = s;
r = i;
}
}
s = 0;
m = INT_MIN;
for(i = r; i >= 1; --i)
{
s += v[i];
if(s > m)
{
m = s;
l = i;
}
}
for(i = l; i <= r; ++i)
smax += v[i];
}
void solve(void)
{
//calc1();
calc2();
}
void print(void)
{
freopen("secv2.out", "w", stdout);
printf("%d %d %d", l, r, smax);
fclose(stdout);
}
int main(void)
{
read();
solve();
print();
return 0;
}