#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
int n,m,a[N];
struct node
{
int leftVal,rightVal;
int incLeft, incRight;
int fluctLeft, fluctRight;
int len,best;
} st[4*N];
node Merge(node a, node b)
{
int Best = max(a.best,b.best);
// update inc subse
cout << "GG " << a.incRight << ' ' << b.fluctLeft << ' ' << a.fluctLeft << endl;
int incR = b.incRight, incL = a.incLeft;
if(a.rightVal < b.leftVal && b.incRight == b.len) {
incR = a.incRight + b.len;
}
if(a.rightVal > b.leftVal && a.incLeft == a.len) {
incL = b.incLeft + a.len;
}
// update best
// case 1 converge
if(a.rightVal > b.leftVal || a.rightVal < b.leftVal)
{
Best = max(Best,a.incRight+b.incLeft);
}
// case2 continue
int fluctL = max(a.fluctLeft,a.incLeft), fluctR = (b.fluctRight,b.incRight);
if(a.rightVal > b.leftVal || a.rightVal < b.leftVal)
{
if(b.len == b.incLeft) fluctR = max(fluctR,a.incRight + b.incLeft);
if(a.len == a.incRight) fluctL = max(fluctL,a.incRight + b.incLeft);
}
// cout << a.fluctRight << endl;
// cout << a.rightVal <<' ' << b.leftVal << endl;
if(a.fluctRight != 0 && a.rightVal > b.leftVal) {
Best = max(Best,a.fluctRight+b.incLeft);
if(b.incLeft == b.len) fluctR = max(fluctR,a.fluctRight+b.incLeft);
// cout << a.fluctRight <<' ' << b.incLeft << endl;
}
if(b.fluctLeft != 0 && a.rightVal < b.leftVal) {
Best = max(Best,b.fluctLeft+a.incRight);
if(a.incRight == a.len) fluctL = max(fluctL,b.fluctLeft+a.incRight);
}
//
return {a.leftVal,b.rightVal,
incL,incR,
fluctL,fluctR,
a.len+b.len,Best};
}
void build(int id, int l, int r)
{
if(l > r) return;
if(l == r){
st[id] = {a[l],a[l],1,1,0,0,1,0};
return;
}
int mid = (l+r)/2;
build(2*id,l,mid);
build(2*id+1,mid+1,r);
cout << l <<' ' << mid << ' ' << r << endl;
st[id] = Merge(st[2*id],st[2*id+1]);
}
void update(int id, int l, int r, int u)
{
if(l > u || r < u) return;
if(l == r)
{
st[id] = {a[l],a[l],1,1,0,0,1,0};
return;
}
int mid = (l+r)/2;
update(2*id,l,mid,u);
update(2*id+1,mid+1,r,u);
cout << l <<' ' <<r <<' ' << mid << endl;
st[id] = Merge(st[2*id],st[2*id+1]);
// cout << l <<' ' << r << ' ' << st[id].fluctRight << ' ' << st[id].fluctLeft <<' ' << st[id].best << endl;
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin >> n >> m;
for(int i = 1; i <= n; i++) cin >> a[i];
build(1,1,n);
for(int i = 1; i <= m; i++)
{
int x,y; cin >> x >> y;
a[x] = y;
update(1,1,n,x);
cout << st[1].best <<'\n';
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IE4gPSAxZTUgKyA3OwppbnQgbixtLGFbTl07CnN0cnVjdCBub2RlCnsKICAgIGludCBsZWZ0VmFsLHJpZ2h0VmFsOwogICAgaW50IGluY0xlZnQsIGluY1JpZ2h0OwogICAgaW50IGZsdWN0TGVmdCwgZmx1Y3RSaWdodDsKICAgIGludCBsZW4sYmVzdDsKfSBzdFs0Kk5dOwpub2RlIE1lcmdlKG5vZGUgYSwgbm9kZSBiKQp7CiAgICBpbnQgQmVzdCA9IG1heChhLmJlc3QsYi5iZXN0KTsKICAgIC8vIHVwZGF0ZSBpbmMgc3Vic2UKICAgIGNvdXQgPDwgIkdHICIgPDwgYS5pbmNSaWdodCA8PCAnICcgPDwgIGIuZmx1Y3RMZWZ0IDw8ICcgJyA8PCBhLmZsdWN0TGVmdCA8PCBlbmRsOwogICAgaW50IGluY1IgPSBiLmluY1JpZ2h0LCBpbmNMID0gYS5pbmNMZWZ0OwogICAgaWYoYS5yaWdodFZhbCA8IGIubGVmdFZhbCAmJiBiLmluY1JpZ2h0ID09IGIubGVuKSB7CiAgICAgICAgaW5jUiA9IGEuaW5jUmlnaHQgKyBiLmxlbjsKICAgIH0KICAgIGlmKGEucmlnaHRWYWwgPiBiLmxlZnRWYWwgJiYgYS5pbmNMZWZ0ID09IGEubGVuKSB7CiAgICAgICAgaW5jTCA9IGIuaW5jTGVmdCArIGEubGVuOwogICAgfQogICAgLy8gdXBkYXRlIGJlc3QKICAgIC8vIGNhc2UgMSBjb252ZXJnZQogICAgaWYoYS5yaWdodFZhbCA+IGIubGVmdFZhbCB8fCBhLnJpZ2h0VmFsIDwgYi5sZWZ0VmFsKQogICAgewogICAgICAgIEJlc3QgPSBtYXgoQmVzdCxhLmluY1JpZ2h0K2IuaW5jTGVmdCk7CiAgICB9CiAgICAvLyBjYXNlMiBjb250aW51ZQogICAgaW50IGZsdWN0TCA9IG1heChhLmZsdWN0TGVmdCxhLmluY0xlZnQpLCBmbHVjdFIgPSAoYi5mbHVjdFJpZ2h0LGIuaW5jUmlnaHQpOwogICAgaWYoYS5yaWdodFZhbCA+IGIubGVmdFZhbCB8fCBhLnJpZ2h0VmFsIDwgYi5sZWZ0VmFsKQogICAgewogICAgICAgIGlmKGIubGVuID09IGIuaW5jTGVmdCkgZmx1Y3RSID0gbWF4KGZsdWN0UixhLmluY1JpZ2h0ICsgYi5pbmNMZWZ0KTsKICAgICAgICBpZihhLmxlbiA9PSBhLmluY1JpZ2h0KSBmbHVjdEwgPSBtYXgoZmx1Y3RMLGEuaW5jUmlnaHQgKyBiLmluY0xlZnQpOwogICAgfQogICAvLyBjb3V0IDw8IGEuZmx1Y3RSaWdodCA8PCBlbmRsOwogICAvLyBjb3V0IDw8IGEucmlnaHRWYWwgPDwnICcgPDwgYi5sZWZ0VmFsIDw8IGVuZGw7CiAgICBpZihhLmZsdWN0UmlnaHQgIT0gMCAmJiBhLnJpZ2h0VmFsID4gYi5sZWZ0VmFsKSB7CiAgICAgICAgICAgIEJlc3QgPSBtYXgoQmVzdCxhLmZsdWN0UmlnaHQrYi5pbmNMZWZ0KTsKICAgICAgICAgICAgaWYoYi5pbmNMZWZ0ID09IGIubGVuKSBmbHVjdFIgPSBtYXgoZmx1Y3RSLGEuZmx1Y3RSaWdodCtiLmluY0xlZnQpOwogICAgICAgICAvLyAgIGNvdXQgPDwgYS5mbHVjdFJpZ2h0IDw8JyAnIDw8IGIuaW5jTGVmdCA8PCBlbmRsOwogICAgfQogICAgaWYoYi5mbHVjdExlZnQgIT0gMCAmJiBhLnJpZ2h0VmFsIDwgYi5sZWZ0VmFsKSB7CiAgICAgICAgQmVzdCA9IG1heChCZXN0LGIuZmx1Y3RMZWZ0K2EuaW5jUmlnaHQpOwogICAgICAgIGlmKGEuaW5jUmlnaHQgPT0gYS5sZW4pIGZsdWN0TCA9IG1heChmbHVjdEwsYi5mbHVjdExlZnQrYS5pbmNSaWdodCk7CiAgICB9CgogICAgLy8KICAgIHJldHVybiB7YS5sZWZ0VmFsLGIucmlnaHRWYWwsCiAgICAgICAgICAgIGluY0wsaW5jUiwKICAgICAgICAgICAgZmx1Y3RMLGZsdWN0UiwKICAgICAgICAgICAgYS5sZW4rYi5sZW4sQmVzdH07Cn0Kdm9pZCBidWlsZChpbnQgaWQsIGludCBsLCBpbnQgcikKewogICAgaWYobCA+IHIpIHJldHVybjsKICAgIGlmKGwgPT0gcil7CiAgICAgICAgc3RbaWRdID0ge2FbbF0sYVtsXSwxLDEsMCwwLDEsMH07CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsK3IpLzI7CiAgICBidWlsZCgyKmlkLGwsbWlkKTsKICAgIGJ1aWxkKDIqaWQrMSxtaWQrMSxyKTsKICAgIGNvdXQgPDwgbCA8PCcgJyA8PCBtaWQgPDwgJyAnIDw8IHIgPDwgZW5kbDsKICAgIHN0W2lkXSA9IE1lcmdlKHN0WzIqaWRdLHN0WzIqaWQrMV0pOwoKfQp2b2lkIHVwZGF0ZShpbnQgaWQsIGludCBsLCBpbnQgciwgaW50IHUpCnsKICAgIGlmKGwgPiB1IHx8IHIgPCB1KSByZXR1cm47CiAgICBpZihsID09IHIpCiAgICB7CiAgICAgICAgc3RbaWRdID0ge2FbbF0sYVtsXSwxLDEsMCwwLDEsMH07CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsK3IpLzI7CiAgICB1cGRhdGUoMippZCxsLG1pZCx1KTsKICAgIHVwZGF0ZSgyKmlkKzEsbWlkKzEscix1KTsKICAgICAgICBjb3V0IDw8IGwgPDwnICcgPDxyICA8PCcgJyA8PCBtaWQgPDwgZW5kbDsKICAgIHN0W2lkXSA9IE1lcmdlKHN0WzIqaWRdLHN0WzIqaWQrMV0pOwogICAgLy8gY291dCA8PCBsIDw8JyAnIDw8IHIgPDwgJyAnIDw8IHN0W2lkXS5mbHVjdFJpZ2h0IDw8ICcgJyA8PCBzdFtpZF0uZmx1Y3RMZWZ0IDw8JyAnIDw8IHN0W2lkXS5iZXN0IDw8IGVuZGw7Cn0KaW50IG1haW4oKQp7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOwogICAgY2luLnRpZSgwKTtjb3V0LnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgY2luID4+IGFbaV07CiAgICBidWlsZCgxLDEsbik7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgIHsKICAgICAgICBpbnQgeCx5OyBjaW4gPj4geCA+PiB5OwogICAgICAgIGFbeF0gPSB5OwogICAgICAgIHVwZGF0ZSgxLDEsbix4KTsKICAgICAgICBjb3V0IDw8IHN0WzFdLmJlc3QgPDwnXG4nOwogICAgfQp9Cg==