#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int ll
using P = pair<int, int>;
#define all(x) x.begin(), x.end()
#define rep(i, l, n) for (int i = l; i < (n); ++i)
#define sz(x) (int)x.size()
const char nl = '\n';
int n, m;
bool c(int x, int y) {
if (x+m >= y||x>y)return 1;
return 0;
}
void solve() {
cin >> n >> m;
vector<int> a(n+1);
int dp[n+1][n+1];
memset(dp, 0, sizeof dp);
rep(i, 1, n+1)
rep(j, 0, n+1)dp[i][j] = -1e9-100;
rep(i, 1, n+1)cin >> a[i];
rep(i, 1, n+1) {
if (dp[i-1][0]+m >= a[i] || dp[i-1][0] > a[i])dp[i][0] = a[i];
rep(j, 1, i+1) {
if(c(dp[i-1][j], a[i]))dp[i][j] = a[i];
else if (dp[i-1][j-1] >= 0)dp[i][j] = max(dp[i][j], dp[i-1][j-1]+m);
}
}
rep(i, 0, n+1)
if (dp[n][i] >= 0) {
cout << i << nl;
return;
}
//cout << dp[1][1] << nl;
}
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
solve();
return 0;
}