#include <bits/stdc++.h>
#define rep(i, n) for (int i = 0; i < n; ++i)
typedef long long ll;
using namespace std;

int main() {
    int n, k;
    cin >> n >> k;
    vector<int> a(n);
    rep(i, n) cin >> a[i];

    vector<int> dp(n, 1e9);
    int ans = 0;
    // rep(i, n) {
    //     dp[i] = 1;
    //     rep(j, i) {
    //         if (abs(a[i] - a[j]) <= k) {
    //             dp[i] = max(dp[i], dp[j] + 1);
    //         }
    //         ans = max(ans, dp[i]);
    //     }
    // }

    rep(i, n) {
        if (lower_bound(dp.begin(), dp.end(), a[i] - 2) != lower_bound(dp.begin(), dp.end(), a[i] + 2)) {
            *lower_bound(dp.begin(), dp.end(), a[i] - 2) = a[i];
            *lower_bound(dp.begin(), dp.end(), a[i] + 2) = a[i];
        } else {
            *lower_bound(dp.begin(), dp.end(), a[i] - 2) = a[i];
        }
    }

    int ans = 0;
    rep(i, n) {
        if (dp[i] != 1e9)
            ans = max(ans, dp[i]);
    }

    cout << ans << endl;

    return 0;
}