#include <bits/stdc++.h>
#include <atcoder/all>
using namespace std;
using namespace atcoder;
const int MOD = 1e9 + 7;
int main(){
    int N, K;
    cin >> N >> K;
    vector<int> A(N);
    for(int i = 0; i < N; i++) cin >> A[i];
    vector<set<int>> cnt(N + 1);
    int zyougen = 0;
    for(int i = 0; i < N; i++){
        if(i == 0) {
            cnt[0].insert(A[i]);
        }
        else{
            int flag = 0;
            for(int j = zyougen; j >= 0; j--){
                auto ite1 = cnt[j].lower_bound(A[i] - K);
                if(ite1 != cnt[j].end() && *ite1 <= A[i] + K){
                    cnt[j + 1].insert(A[i]);
                    flag = 1;
                    zyougen++;
                    break;
                }
            }
            if(flag == 0) cnt[0].insert(A[i]);
        }
    }
    int ans = 0;
    for(int i = 1; i < N + 1; i++){
        if(cnt[i].size() > 0) ans = max(ans, i);
    }
    cout << ans + 1 << endl;
}