#include <iostream>
#include <fstream>
#define MAX 1e16
using namespace std;
ifstream f("1.in");
ofstream g("1.out");
struct arb{
int st, dr, sol, lazy;
};
arb v[400005];
int n, s, d, x, i;
void initial(int a, int b, int nod)
{
int mij = (a + b) / 2;
v[nod].dr = v[nod].st = v[nod].sol = b - a + 1;
if (a == b) return;
initial(a, mij, nod*2);
initial(mij + 1, b, nod*2 + 1);
}
void propag(int a, int b, int nod)
{
if (v[nod] == 0) return;
if (v[nod] == 1)
{
v[nod].dr = v[nod].st = v[nod].sol = 0;
}
else
{
v[nod].dr = v[nod].st = v[nod].sol = b - a + 1;
}
v[2*nod].lazy = v[2*nod + 1].lazy = v[nod].lazy;
v[nod].lazy = 0;
}
void act(int a, int b, int ua, int ub, int nod, int val)
{
int mij = (a + b) / 2;
if (ua <= a && ub >= b)
{
arb[nod].lazy = val;
propag(a, b, nod);
return;
}
propag(a, b, nod);
if (ua <= mij) act(a, mij, ua, ub, 2*nod, val);
else propag(a, mij, 2*nod);
if (ub > mij) act (mij + 1, b, ua, ub, 2*nod + 1, val);
else propag(mij + 1, b, 2*nod + 1);
v[nod].sol = max (v[2*nod].dr + v[2*nod + 1].st, max(v[2*nod].sol, v[2*nod + 1].sol));
v[nod].st = v[2*nod].st;
}
int main()
{
return 0;
}