using namespace std;
#include<iostream>
#include<vector>
#include <stdlib.h>
int main() {
int n, k;
cin >> n >> k;
vector<int> vektori;
int x;
while (cin >> x) {
vektori.push_back (x);
}
int s = 0;
int a = 0;
int maara = 0;
int pienin = vektori[0];
int suurin = vektori[0];
vector<int> joku = {vektori[0]};
while (s < n - 1) {
if (a != n - 1) {
if (abs(suurin - vektori[a + 1]) <= k && abs(pienin - vektori[a + 1]) <= k) {
a ++;
joku.push_back(vektori[a]);
suurin = max(suurin, vektori[a]);
pienin = min(pienin, vektori[a]);
}
else {
maara += joku.size();
if (joku.size() > 1) {
if (joku[0] == pienin) {
joku.erase(joku.begin());
pienin = valitsePienin(joku);
}
else if (joku[0] == suurin) {
joku.erase(joku.begin());
suurin = valitseSuurin(joku);
}
else {
joku.erase(joku.begin());
}
}
else {
joku.erase(joku.begin());
}
s ++ 1;
if (s > a) {
joku.push_back(vektori[s]);
pienin = vektori[s];
suurin = vektori[s];
a = s;
}
}
}
else {
maara += joku.size();
if joku.size() > 1 {
if (joku[0] == pienin) {
joku.erase(joku.begin());
pienin = valitsePienin(joku);
}
else if (joku[0] == suurin) {
joku.erase(joku.begin());
suurin = valitseSuurin(joku);
}
else {
joku.erase(joku.begin());
}
}
else {
joku.erase(joku.begin());
}
s ++1;
}
}
maara++;
cout << maara;
return 0;
}
int valitsePienin(vector<int> lista) {
pienin = lista[0];
for (i = 1; i < lista.size(); i++) {
pienin = min(pienin, lista[i]);
return pienin;
}
}
int valitseSuurin(vector<int> lista) {
suurin = lista[0];
for (i = 1; i < lista.size(); i++) {
suurin = max(suurin, lista[i]);
return suurin;
}
}