#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 1e6 + 5;
int n, L, D;
int h[N];
int f[21][N]; // f[k][i] = max của đoạn bắt đầu từ i và có độ dài 2^k
int g[21][N]; // g[k][i] = min của đoạn bắt đầu từ i và có độ dài 2^k
void precompute() {
for (int i = 1; i <= n; i++) f[0][i] = g[0][i] = h[i];
for (int k = 1; (1 << k) <= n; k++) {
for (int i = 1; i + (1 << k) - 1 <= n; i++) {
f[k][i] = max(f[k - 1][i], f[k - 1][i + (1 << (k - 1))]);
g[k][i] = min(g[k - 1][i], g[k - 1][i + (1 << (k - 1))]);
}
}
}
int getMax(int l, int r) {
int k = log2(r - l + 1);
return max(f[k][l], f[k][r - (1 << k) + 1]);
}
int getMin(int l, int r) {
int k = log2(r - l + 1);
return min(g[k][l], g[k][r - (1 << k) + 1]);
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin >> n >> L >> D;
for (int i = 1; i <= n; i++) cin >> h[i];
precompute();
// Khi ta chốt đầu mút l, với r càng lớn thì giá trị max(h[l..r]) - min(h[l..r]) càng lớn
// r - l >= L
// <=> r >= L + l
ll ans = 0;
for (int l = 1, r = 0; l <= n; l++) {
// r xa nhất thoả mãn max(h[l..r]) - min(h[l..r]) <= D
while ((r + 1 <= n) && (getMax(l, r + 1) - getMin(l, r + 1) <= D)) r++;
ans += max(0, r - (L + l) + 1);
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAxZTYgKyA1OyAKCmludCBuLCBMLCBEOyAgCmludCBoW05dOyAKCmludCBmWzIxXVtOXTsgLy8gZltrXVtpXSA9IG1heCBj4bunYSDEkW/huqFuIGLhuq90IMSR4bqndSB04burIGkgdsOgIGPDsyDEkeG7mSBkw6BpIDJeawppbnQgZ1syMV1bTl07IC8vIGdba11baV0gPSBtaW4gY+G7p2EgxJFv4bqhbiBi4bqvdCDEkeG6p3UgdOG7qyBpIHbDoCBjw7MgxJHhu5kgZMOgaSAyXmsKCnZvaWQgcHJlY29tcHV0ZSgpIHsKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgZlswXVtpXSA9IGdbMF1baV0gPSBoW2ldOyAgCgoJZm9yIChpbnQgayA9IDE7ICgxIDw8IGspIDw9IG47IGsrKykgewoJCWZvciAoaW50IGkgPSAxOyBpICsgKDEgPDwgaykgLSAxIDw9IG47IGkrKykgewoJCQlmW2tdW2ldID0gbWF4KGZbayAtIDFdW2ldLCBmW2sgLSAxXVtpICsgKDEgPDwgKGsgLSAxKSldKTsgCgkJCWdba11baV0gPSBtaW4oZ1trIC0gMV1baV0sIGdbayAtIDFdW2kgKyAoMSA8PCAoayAtIDEpKV0pOyAKCQl9Cgl9Cn0KCmludCBnZXRNYXgoaW50IGwsIGludCByKSB7CglpbnQgayA9IGxvZzIociAtIGwgKyAxKTsgCglyZXR1cm4gbWF4KGZba11bbF0sIGZba11bciAtICgxIDw8IGspICsgMV0pOyAKfQoKaW50IGdldE1pbihpbnQgbCwgaW50IHIpIHsKCWludCBrID0gbG9nMihyIC0gbCArIDEpOyAKCXJldHVybiBtaW4oZ1trXVtsXSwgZ1trXVtyIC0gKDEgPDwgaykgKyAxXSk7IAp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgCgljaW4udGllKG51bGxwdHIpOyAJCgljaW4gPj4gbiA+PiBMID4+IEQ7IAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gaFtpXTsgCgoJcHJlY29tcHV0ZSgpOyAgCiAgCQogIAkvLyBLaGkgdGEgY2jhu5F0IMSR4bqndSBtw7p0IGwsIHbhu5tpIHIgY8OgbmcgbOG7m24gdGjDrCBnacOhIHRy4buLIG1heChoW2wuLnJdKSAtIG1pbihoW2wuLnJdKSBjw6BuZyBs4bubbgoJLy8gCSAgIHIgLSBsID49IEwgCgkvLyA8PT4gciAgICAgPj0gTCArIGwKCWxsIGFucyA9IDA7ICAgCglmb3IgKGludCBsID0gMSwgciA9IDA7IGwgPD0gbjsgbCsrKSB7CgkJLy8gciB4YSBuaOG6pXQgdGhv4bqjIG3Do24gbWF4KGhbbC4ucl0pIC0gbWluKGhbbC4ucl0pIDw9IEQKCQl3aGlsZSAoKHIgKyAxIDw9IG4pICYmIChnZXRNYXgobCwgciArIDEpIC0gZ2V0TWluKGwsIHIgKyAxKSA8PSBEKSkgcisrOyAKCQlhbnMgKz0gbWF4KDAsIHIgLSAoTCArIGwpICsgMSk7IAoJfQoKCWNvdXQgPDwgYW5zIDw8ICdcbic7IAp9