set<re>::iterator split(int x)
{
auto it=S.upper_bound({x});
it--;
int l=it->l,r=it->r,k=it->k;
if (it->l!=x)
{
S.erase(it);
S.insert({l,x-1,k});
return S.insert({x,r,k}).first;
}
return it;
}
ll ans[N];
int get_c(int x)
{
auto it=S.upper_bound({x});
it--;
return it->k;
}
set<re>::iterator gao(int x)
{
auto it=S.upper_bound({x}); it--;
while (1)
{
auto it2=next(it);
if (it2!=S.end()&&it2->k==it->k)
{
int r=it2->r; S.erase(it2);
it->r=r;
} else break;
}
while (it!=S.begin())
{
auto it2=prev(it);
if (it2->k==it->k)
{
int l=it2->l; S.erase(it2);
it->l=l;
} else break;
}
return it;
}