#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e5 + 5, INF = 4e18;
long long n,q,a[MaxN];
struct Segment_Tree
{
vector<pair<long long,long long>> st;
pair<long long, long long> combine(pair<long long, long long> a, pair<long long, long long> b)
{
if(a.first>b.first) return a;
if(a.first<b.first) return b;
return {a.first, a.second+b.second};
}
void build(long long id, long long l, long long r)
{
if(l==r)
{
st[id]={a[l],1};
return;
}
long long mid = (l+r)>>1;
build(2*id,l,mid);
build(2*id+1,mid+1,r);
st[id]=combine(st[2*id],st[2*id+1]);
}
pair<long long, long long> get(long long id, long long l, long long r, long long u, long long v)
{
if(l>v||r<u)
{
return {-INF,0};
}
if(u<=l&&r<=v)
{
return st[id];
}
long long mid = (l+r)>>1;
return combine(get(2*id,l,mid,u,v),get(2*id+1,mid+1,r,u,v));
}
void update(long long id, long long l, long long r, long long u, long long val)
{
if(l>u||r<u)
{
return;
}
if(l==r)
{
st[id]={val,1};
return;
}
long long mid = (l+r)>>1;
if(u<=mid)
{
update(2*id,l,mid,u,val);
}
else
{
update(2*id+1,mid+1,r,u,val);
}
st[id]=combine(st[2*id],st[2*id+1]);
}
pair<long long, long long> get(long long u, long long v)
{
return get(1,1,n,u,v);
}
void update(long long u,long long val)
{
update(1,1,n,u,val);
}
};
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMWU1ICsgNSwgSU5GID0gNGUxODsKCmxvbmcgbG9uZyBuLHEsYVtNYXhOXTsKCnN0cnVjdCBTZWdtZW50X1RyZWUKewogICAgdmVjdG9yPHBhaXI8bG9uZyBsb25nLGxvbmcgbG9uZz4+IHN0OwoKICAgIHBhaXI8bG9uZyBsb25nLCBsb25nIGxvbmc+IGNvbWJpbmUocGFpcjxsb25nIGxvbmcsIGxvbmcgbG9uZz4gYSwgcGFpcjxsb25nIGxvbmcsIGxvbmcgbG9uZz4gYikKICAgIHsKICAgICAgICBpZihhLmZpcnN0PmIuZmlyc3QpIHJldHVybiBhOwogICAgICAgIGlmKGEuZmlyc3Q8Yi5maXJzdCkgcmV0dXJuIGI7CiAgICAgICAgcmV0dXJuIHthLmZpcnN0LCBhLnNlY29uZCtiLnNlY29uZH07CiAgICB9CgogICAgdm9pZCBidWlsZChsb25nIGxvbmcgaWQsIGxvbmcgbG9uZyBsLCBsb25nIGxvbmcgcikKICAgIHsKICAgICAgICBpZihsPT1yKQogICAgICAgIHsKICAgICAgICAgICAgc3RbaWRdPXthW2xdLDF9OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBsb25nIGxvbmcgbWlkID0gKGwrcik+PjE7CgogICAgICAgIGJ1aWxkKDIqaWQsbCxtaWQpOwogICAgICAgIGJ1aWxkKDIqaWQrMSxtaWQrMSxyKTsKCiAgICAgICAgc3RbaWRdPWNvbWJpbmUoc3RbMippZF0sc3RbMippZCsxXSk7CiAgICB9CgogICAgcGFpcjxsb25nIGxvbmcsIGxvbmcgbG9uZz4gZ2V0KGxvbmcgbG9uZyBpZCwgbG9uZyBsb25nIGwsIGxvbmcgbG9uZyByLCBsb25nIGxvbmcgdSwgbG9uZyBsb25nIHYpCiAgICB7CiAgICAgICAgaWYobD52fHxyPHUpCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gey1JTkYsMH07CiAgICAgICAgfQoKICAgICAgICBpZih1PD1sJiZyPD12KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHN0W2lkXTsKICAgICAgICB9CgogICAgICAgIGxvbmcgbG9uZyBtaWQgPSAobCtyKT4+MTsKCiAgICAgICAgcmV0dXJuIGNvbWJpbmUoZ2V0KDIqaWQsbCxtaWQsdSx2KSxnZXQoMippZCsxLG1pZCsxLHIsdSx2KSk7CiAgICB9CgogICAgdm9pZCB1cGRhdGUobG9uZyBsb25nIGlkLCBsb25nIGxvbmcgbCwgbG9uZyBsb25nIHIsIGxvbmcgbG9uZyB1LCBsb25nIGxvbmcgdmFsKQogICAgewogICAgICAgIGlmKGw+dXx8cjx1KQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYobD09cikKICAgICAgICB7CiAgICAgICAgICAgIHN0W2lkXT17dmFsLDF9OwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBsb25nIGxvbmcgbWlkID0gKGwrcik+PjE7CgogICAgICAgIGlmKHU8PW1pZCkKICAgICAgICB7CiAgICAgICAgICAgIHVwZGF0ZSgyKmlkLGwsbWlkLHUsdmFsKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgdXBkYXRlKDIqaWQrMSxtaWQrMSxyLHUsdmFsKTsKICAgICAgICB9CgogICAgICAgIHN0W2lkXT1jb21iaW5lKHN0WzIqaWRdLHN0WzIqaWQrMV0pOwogICAgfQoKICAgIHBhaXI8bG9uZyBsb25nLCBsb25nIGxvbmc+IGdldChsb25nIGxvbmcgdSwgbG9uZyBsb25nIHYpCiAgICB7CiAgICAgICAgcmV0dXJuIGdldCgxLDEsbix1LHYpOwogICAgfQoKICAgIHZvaWQgdXBkYXRlKGxvbmcgbG9uZyB1LGxvbmcgbG9uZyB2YWwpCiAgICB7CiAgICAgICAgdXBkYXRlKDEsMSxuLHUsdmFsKTsKICAgIH0KfTsKCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7Cgp9Cg==