#include <bits/stdc++.h>
using namespace std;
#define TASK "INTERVAL"
using ll = long long;
const int N = 1e5+5;
int n, Lc[N], Rc[N];
ll K, a[N];
int build() {
vector<int> st;
for (int i = 1; i <= n; i++) {
int lst = 0;
while (!st.empty() && a[st.back()] > a[i]) {
lst = st.back(); st.pop_back();
}
if (!st.empty()) Rc[st.back()] = i;
Lc[i] = lst;
st.push_back(i);
}
return st.front();
}
ll ans = 0;
vector<ll> dnc(vector<ll> v, ll x) {
vector<ll> a; a.reserve(v.size() + 1);
vector<ll>::iterator it = lower_bound(v.begin(), v.end(), x);
a.insert(a.end(), v.begin(), it);
a.push_back(x);
a.insert(a.end(), it, v.end());
return a;
}
vector<ll> dfs(int u){
if (!u) return {};
vector<ll> L = dfs(Lc[u]);
vector<ll> R = dfs(Rc[u]);
ll m = a[u];
vector<ll> A = dnc(L, m);
vector<ll> B = dnc(R, m);
for (int i = 0, j = 0; i < (int)B.size(); i++){
ll lim = B[i] + (K - m);
while (j < (int)A.size() && A[j] <= lim) j++;
ans += j;
}
vector<ll> S; S.reserve(A.size()+R.size());
merge(A.begin(), A.end(), R.begin(), R.end(), back_inserter(S));
return S;
}
int main(){
ios::sync_with_stdio(0); cin.tie(0);
// freopen(TASK".INP", "r", stdin);
// freopen(TASK".OUT", "w", stdout);
cin >> n >> K;
for (int i = 1; i <= n; ++i)
cin >> a[i];
int root = build();
dfs(root);
cout << ans << "\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIFRBU0sgIklOVEVSVkFMIgoKdXNpbmcgbGwgPSBsb25nIGxvbmc7Cgpjb25zdCBpbnQgTiA9IDFlNSs1OwppbnQgbiwgTGNbTl0sIFJjW05dOyAKbGwgSywgYVtOXTsKCmludCBidWlsZCgpIHsKICAgIHZlY3RvcjxpbnQ+IHN0OwogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgaW50IGxzdCA9IDA7CiAgICAgICAgd2hpbGUgKCFzdC5lbXB0eSgpICYmIGFbc3QuYmFjaygpXSA+IGFbaV0pIHsKICAgICAgICAgICAgbHN0ID0gc3QuYmFjaygpOyBzdC5wb3BfYmFjaygpOwogICAgICAgIH0KICAgICAgICBpZiAoIXN0LmVtcHR5KCkpIFJjW3N0LmJhY2soKV0gPSBpOwogICAgICAgIExjW2ldID0gbHN0OwogICAgICAgIHN0LnB1c2hfYmFjayhpKTsKICAgIH0KICAgIHJldHVybiBzdC5mcm9udCgpOwp9CgpsbCBhbnMgPSAwOwoKdmVjdG9yPGxsPiBkbmModmVjdG9yPGxsPiB2LCBsbCB4KSB7CiAgICB2ZWN0b3I8bGw+IGE7IGEucmVzZXJ2ZSh2LnNpemUoKSArIDEpOwoKICAgIHZlY3RvcjxsbD46Oml0ZXJhdG9yIGl0ID0gbG93ZXJfYm91bmQodi5iZWdpbigpLCB2LmVuZCgpLCB4KTsKICAgIGEuaW5zZXJ0KGEuZW5kKCksIHYuYmVnaW4oKSwgaXQpOwogICAgYS5wdXNoX2JhY2soeCk7CiAgICBhLmluc2VydChhLmVuZCgpLCBpdCwgdi5lbmQoKSk7CgogICAgcmV0dXJuIGE7Cn0KCnZlY3RvcjxsbD4gZGZzKGludCB1KXsKICAgIGlmICghdSkgcmV0dXJuIHt9OwogICAgdmVjdG9yPGxsPiBMID0gZGZzKExjW3VdKTsKICAgIHZlY3RvcjxsbD4gUiA9IGRmcyhSY1t1XSk7CiAgICBsbCBtID0gYVt1XTsKCiAgICB2ZWN0b3I8bGw+IEEgPSBkbmMoTCwgbSk7CiAgICB2ZWN0b3I8bGw+IEIgPSBkbmMoUiwgbSk7CiAgICAKICAgIGZvciAoaW50IGkgPSAwLCBqID0gMDsgaSA8IChpbnQpQi5zaXplKCk7IGkrKyl7CiAgICAgICAgbGwgbGltID0gQltpXSArIChLIC0gbSk7CiAgICAgICAgd2hpbGUgKGogPCAoaW50KUEuc2l6ZSgpICYmIEFbal0gPD0gbGltKSBqKys7CiAgICAgICAgYW5zICs9IGo7CiAgICB9CgogICAgdmVjdG9yPGxsPiBTOyBTLnJlc2VydmUoQS5zaXplKCkrUi5zaXplKCkpOwogICAgbWVyZ2UoQS5iZWdpbigpLCBBLmVuZCgpLCBSLmJlZ2luKCksIFIuZW5kKCksIGJhY2tfaW5zZXJ0ZXIoUykpOwoKICAgIHJldHVybiBTOwp9CgppbnQgbWFpbigpewogICAgaW9zOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7CgogICAgLy8gZnJlb3BlbihUQVNLIi5JTlAiLCAiciIsIHN0ZGluKTsKICAgIC8vIGZyZW9wZW4oVEFTSyIuT1VUIiwgInciLCBzdGRvdXQpOwoKICAgIGNpbiA+PiBuID4+IEs7CgogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSAKICAgICAgICBjaW4gPj4gYVtpXTsKCiAgICBpbnQgcm9vdCA9IGJ1aWxkKCk7CiAgICBkZnMocm9vdCk7CiAgICBjb3V0IDw8IGFucyA8PCAiXG4iOwoKICAgIHJldHVybiAwOwp9Cg==