#include <stdio.h>
#define FOR(i, a, b) for (i = (a); i <= (b); i++)
#define MaxN 200033
int A[MaxN], N;
int sum, smin, s, sp, ep, lsol, spsol;
int main()
{
int i, val, sgn;
FILE *fin = fopen("buline.in", "rt");
FILE *fout = fopen("buline.out", "wt");
int albe = 0, negre = 0;
fscanf(fin, "%d", &N);
FOR (i, 1, N)
{
fscanf(fin, "%d %d", &val, &sgn);
if (!sgn) val *= -1, negre = 1;
else albe = 1;
A[i] = val;
sum += A[i];
}
smin = 0, s = 0, sp = 1;
FOR(i, 1, N)
{
s += A[i];
if (s < smin)
{
smin = s;
ep = i;
spsol = sp;
}
if (s > 0)
{
s = 0;
sp = i + 1;
}
}
sp = spsol;
if (ep == N) spsol = 1;
else spsol = ep + 1;
lsol = (N - spsol + 1) + (sp - 1);
/*
if (negre && !albe)
{
int j, min_val = A[1], pos_min = 1;
FOR(j, 2, N)
if (min_val < A[j]) min_val = A[j], pos_min = j;
fprintf(fout, "%d %d %d", min_val, pos_min, 1);
}
else
if (!negre && albe)
{
fprintf(fout, "%d %d %d", sum, 1, N);
}
else
fprintf(fout, "%d %d %d", sum - smin, spsol, lsol);
*/
int smax = 0, spmax = 0, spsol2, lsol2;
s = 0;
FOR (i, 1, N)
{
s += A[i];
if (s > smax)
{
smax = s;
spsol2 = sp;
ep = i;
}
if (s < 0)
{
s = 0;
sp = i + 1;
}
}
lsol2 = (ep - spsol2 + 1);
if (sum - smin > smax)
fprintf(fout, "%d %d %d", sum - smin, spsol, lsol);
else
fprintf(fout, "%d %d %d", smax, spsol2, lsol2);
fclose(fin);
fclose(fout);
return 0;
}