#include <bits/stdc++.h>
using namespace std;
const int maxn = 500002;
long long a[maxn];
int n, k, d;
void enter() {
  cin >> n >> k >> d;
  for (int i = (1), _b = (n + 1); i < _b; ++i) cin >> a[i];
}
int seg[4 * maxn];
void update(int l, int r, int st, int q) {
  if (l == r)
    seg[st] = 1;
  else {
    int mid = (l + r) >> 1;
    if (mid >= q)
      update(l, mid, st * 2, q);
    else
      update(mid + 1, r, st * 2 + 1, q);
    seg[st] = max(seg[st * 2], seg[st * 2 + 1]);
  }
}
int _get(int l, int r, int u, int v, int st) {
  if (u <= l && r <= v)
    return seg[st];
  else if (l > v || r < u)
    return 0;
  else {
    int mid = (l + r) >> 1;
    return max(_get(l, mid, u, v, st * 2), _get(mid + 1, r, u, v, st * 2 + 1));
  }
}
void solve() {
  sort(a + 1, a + n + 1);
  update(0, n, 1, 0);
  for (int i = (1), _b = (n + 1); i < _b; ++i) {
    int pos = lower_bound(a + 1, a + n + 1, a[i] - d) - a;
    if (pos <= i - k + 1) {
      if (_get(0, n, pos - 1, i - k, 1) == 1) {
        if (i == n) {
          cout << "YES";
          exit(0);
        } else
          update(0, n, 1, i);
      }
    }
  }
  cout << "NO";
}
int main() {
  enter();
  solve();
}
