#include <bits/stdc++.h>

#include <atcoder/twosat>
using namespace atcoder;

using namespace std;
using ll = long long;

int main() {
    int N, K;
    cin >> N >> K;

    // mcf_graph<int, int> graph(N + 1);
    // for (int i = 0; i < N; i++) {
    // int a;
    // cin >> a;
    // for (int j = 0; j <= i; j++) {
    // graph.add_edge(j, i + 1, a, 1);
    // }
    // // graph.add_edge(i, i + 1, a, 1);
    // }

    // pair<int, int> p = graph.flow(0, N, K);
    // cout << p.first << " " << p.second << endl;
    vector<int> A(N);
    for (int i = 0; i < N; i++) {
        cin >> A[i];
    }

    two_sat ts(N);
    for (int i = 0; i < N; i++) {
        for (int j = i + 1; j < N; j++) {
            if (abs(A[i] - A[j]) > K) {
                ts.add_clause(i, true, j, true);
            }
        }
    }

    if (!ts.satisfiable()) {
        cout << "No" << endl;
        return 0;
    }

    vector<bool> ans = ts.answer();
    int output = 0;
    for (int i = 0; i < N; i++) {
        if (ans[i]) output++;
    }

    cout << output << endl;

    return 0;
}
