#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;
void read(void)
{
freopen("secv2.in", "r", stdin);
scanf("%d %d", &N, &K);
for(i = 1; i <= N; ++i)
{
scanf("%d", &v[i]);
if(v[i] > 0)
++nr;
}
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 solve(void)
{
//if(nr >= K)
calc();
/*else
{
for(i = 1; i <= N; ++i)
smax += v[i];
}*/
}
void print(void)
{
freopen("secv2.out", "w", stdout);
//if(nr < K)
//printf("%d %d %d", 1, N, smax);
// else
printf("%d %d %d", sol[poz].l, sol[poz].r, sol[poz].val);
fclose(stdout);
}
int main(void)
{
read();
solve();
print();
return 0;
}