#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<iostream>
#include<fstream>
#include<map>
#include<ctime>
#include<set>
#include<queue>
#include<cmath>
#include<vector>
#include<bitset>
#include<functional>
#define x first
#define y second
#define mp make_pair
#define pb push_back
#define REP(i,l,r) for((i)=(l);(i)<=(r);++(i))
#define REP2(i,l,r) for((i)=(l);(i)!=(r);++(i))
using namespace std;
typedef long long LL;
typedef double ld;
const int MAX=300000+10;
const int INF=2000000000;
int N,K;
int sum[MAX],t[MAX];
void add(int a,int b)
{
for(;a<MAX;a+=(a&(-a)))
sum[a]++;
}
int ask(int a)
{
int ans=0;
for(;a;a-=a&(-a))
ans+=sum[a];
return ans;
}
pair<int,int> tree[MAX*4];
int flag[MAX*4];
void flagit(int u,int d)
{
flag[u]+=d;
tree[u].x+=d;
}
void update(int u)
{
tree[u]=max(tree[u*2],tree[u*2+1]);
}
void down(int u)
{
if(flag[u])
{
flagit(u*2,flag[u]);
flagit(u*2+1,flag[u]);
flag[u]=0;
}
}
void build(int u,int l,int r)
{
if(l==r)
tree[u]=mp(t[l]<0?t[l]:-INF,l);
else
{
int mid=(l+r)/2;
build(u*2,l,mid);
build(u*2+1,mid+1,r);
update(u);
}
}
void add(int u,int l,int r,int a,int b,int x)
{
if(r<a || b<l)
return;
if(a<=l && r<=b)
flagit(u,x);
else
{
down(u);
int mid=(l+r)/2;
add(u*2,l,mid,a,b,x);
add(u*2+1,mid+1,r,a,b,x);
update(u);
}
}
pair<int,int> ask(int u,int l,int r,int a,int b)
{
if(r<a || b<l)
return mp(-INF,0);
if(a<=l && r<=b)
return tree[u];
else
{
down(u);
int mid=(l+r)/2;
return max(ask(u*2,l,mid,a,b),ask(u*2+1,mid+1,r,a,b));
}
}
void inicjuj(int n, int k, int *D)
{
N=n;
K=k;
int i;
REP(i,1,n)
{
t[i]=D[i-1]-k;
if(t[i]>=0)
add(i,1);
}
build(1,1,n);
}
void podlej(int a, int b)
{
++a;
++b;
add(1,1,N,a,b,1);
pair<int,int> tmp;
while((tmp=ask(1,1,N,a,b)).x==0)
{
add(tmp.y,1);
add(1,1,N,tmp.y,tmp.y,-INF);
}
}
int dojrzale(int a, int b)
{
++a;
++b;
return ask(b)-ask(a-1);
}
int main()
{
return 0;
}
I2luY2x1ZGU8Y3N0ZGlvPgojaW5jbHVkZTxjc3RkbGliPgojaW5jbHVkZTxjc3RyaW5nPgojaW5jbHVkZTxhbGdvcml0aG0+CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxmc3RyZWFtPgojaW5jbHVkZTxtYXA+CiNpbmNsdWRlPGN0aW1lPgojaW5jbHVkZTxzZXQ+CiNpbmNsdWRlPHF1ZXVlPgojaW5jbHVkZTxjbWF0aD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxiaXRzZXQ+CiNpbmNsdWRlPGZ1bmN0aW9uYWw+CiNkZWZpbmUgeCBmaXJzdAojZGVmaW5lIHkgc2Vjb25kCiNkZWZpbmUgbXAgbWFrZV9wYWlyCiNkZWZpbmUgcGIgcHVzaF9iYWNrCiNkZWZpbmUgUkVQKGksbCxyKSBmb3IoKGkpPShsKTsoaSk8PShyKTsrKyhpKSkKI2RlZmluZSBSRVAyKGksbCxyKSBmb3IoKGkpPShsKTsoaSkhPShyKTsrKyhpKSkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnR5cGVkZWYgbG9uZyBsb25nIExMOwp0eXBlZGVmIGRvdWJsZSBsZDsKCmNvbnN0IGludCBNQVg9MzAwMDAwKzEwOwpjb25zdCBpbnQgSU5GPTIwMDAwMDAwMDA7CgppbnQgTixLOwppbnQgc3VtW01BWF0sdFtNQVhdOwoKdm9pZCBhZGQoaW50IGEsaW50IGIpCnsKICAgIGZvcig7YTxNQVg7YSs9KGEmKC1hKSkpCiAgICAgICAgc3VtW2FdKys7Cn0KCmludCBhc2soaW50IGEpCnsKICAgIGludCBhbnM9MDsKICAgIGZvcig7YTthLT1hJigtYSkpCiAgICAgICAgYW5zKz1zdW1bYV07CiAgICByZXR1cm4gYW5zOwp9CgpwYWlyPGludCxpbnQ+IHRyZWVbTUFYKjRdOwppbnQgZmxhZ1tNQVgqNF07Cgp2b2lkIGZsYWdpdChpbnQgdSxpbnQgZCkKewogICAgZmxhZ1t1XSs9ZDsKICAgIHRyZWVbdV0ueCs9ZDsKfQoKdm9pZCB1cGRhdGUoaW50IHUpCnsKICAgIHRyZWVbdV09bWF4KHRyZWVbdSoyXSx0cmVlW3UqMisxXSk7Cn0KCnZvaWQgZG93bihpbnQgdSkKewogICAgaWYoZmxhZ1t1XSkKICAgIHsKICAgICAgICBmbGFnaXQodSoyLGZsYWdbdV0pOwogICAgICAgIGZsYWdpdCh1KjIrMSxmbGFnW3VdKTsKICAgICAgICBmbGFnW3VdPTA7CiAgICB9Cn0KCnZvaWQgYnVpbGQoaW50IHUsaW50IGwsaW50IHIpCnsKICAgIGlmKGw9PXIpCiAgICAgICAgdHJlZVt1XT1tcCh0W2xdPDA/dFtsXTotSU5GLGwpOwogICAgZWxzZQogICAgewogICAgICAgIGludCBtaWQ9KGwrcikvMjsKICAgICAgICBidWlsZCh1KjIsbCxtaWQpOwogICAgICAgIGJ1aWxkKHUqMisxLG1pZCsxLHIpOwogICAgICAgIHVwZGF0ZSh1KTsKICAgIH0KfQoKdm9pZCBhZGQoaW50IHUsaW50IGwsaW50IHIsaW50IGEsaW50IGIsaW50IHgpCnsKICAgIGlmKHI8YSB8fCBiPGwpCiAgICAgICAgcmV0dXJuOwogICAgaWYoYTw9bCAmJiByPD1iKQogICAgICAgIGZsYWdpdCh1LHgpOwogICAgZWxzZQogICAgewogICAgICAgIGRvd24odSk7CiAgICAgICAgaW50IG1pZD0obCtyKS8yOwogICAgICAgIGFkZCh1KjIsbCxtaWQsYSxiLHgpOwogICAgICAgIGFkZCh1KjIrMSxtaWQrMSxyLGEsYix4KTsKICAgICAgICB1cGRhdGUodSk7CiAgICB9Cn0KCnBhaXI8aW50LGludD4gYXNrKGludCB1LGludCBsLGludCByLGludCBhLGludCBiKQp7CiAgICBpZihyPGEgfHwgYjxsKQogICAgICAgIHJldHVybiBtcCgtSU5GLDApOwogICAgaWYoYTw9bCAmJiByPD1iKQogICAgICAgIHJldHVybiB0cmVlW3VdOwogICAgZWxzZQogICAgewogICAgICAgIGRvd24odSk7CiAgICAgICAgaW50IG1pZD0obCtyKS8yOwogICAgICAgIHJldHVybiBtYXgoYXNrKHUqMixsLG1pZCxhLGIpLGFzayh1KjIrMSxtaWQrMSxyLGEsYikpOwogICAgfQp9Cgp2b2lkIGluaWNqdWooaW50IG4sIGludCBrLCBpbnQgKkQpCnsKICAgIE49bjsKICAgIEs9azsKICAgIGludCBpOwogICAgUkVQKGksMSxuKQogICAgewogICAgICAgIHRbaV09RFtpLTFdLWs7CiAgICAgICAgaWYodFtpXT49MCkKICAgICAgICAgICAgYWRkKGksMSk7CiAgICB9CiAgICBidWlsZCgxLDEsbik7Cn0KCnZvaWQgcG9kbGVqKGludCBhLCBpbnQgYikKewogICAgKythOwogICAgKytiOwogICAgYWRkKDEsMSxOLGEsYiwxKTsKICAgIHBhaXI8aW50LGludD4gdG1wOwogICAgd2hpbGUoKHRtcD1hc2soMSwxLE4sYSxiKSkueD09MCkKICAgIHsKICAgICAgICBhZGQodG1wLnksMSk7CiAgICAgICAgYWRkKDEsMSxOLHRtcC55LHRtcC55LC1JTkYpOwogICAgfQp9CgppbnQgZG9qcnphbGUoaW50IGEsIGludCBiKQp7CiAgICArK2E7CiAgICArK2I7CiAgICByZXR1cm4gYXNrKGIpLWFzayhhLTEpOwp9CgppbnQgbWFpbigpCnsKICAgIHJldHVybiAwOwp9Cg==