#include <bits/stdc++.h>
using namespace std;
int Max[155555 << 2];
int Min[155555 << 2];
int sum[155555 << 2];
int a[155555];
int tmax, tmin, xfg;
int n, L, s;
void pushup(int rt) {
  Min[rt] = min(Min[rt << 1], Min[rt << 1 | 1]);
  Max[rt] = max(Max[rt << 1], Max[rt << 1 | 1]);
  sum[rt] = min(sum[rt << 1], sum[rt << 1 | 1]);
}
void build(int l, int r, int rt) {
  Max[rt] = -1999999999;
  sum[rt] = 1999999999;
  Min[rt] = 1999999999;
  if (l == r) {
    Min[rt] = a[l];
    Max[rt] = a[l];
    return;
  }
  int m = (l + r) >> 1;
  build(l, m, rt << 1);
  build(m + 1, r, rt << 1 | 1);
  pushup(rt);
}
void update(int p, int l, int r, int rt, int c) {
  if (p == l && p == r) {
    sum[rt] = c;
    return;
  }
  int m = (l + r) >> 1;
  if (p <= m) update(p, l, m, rt << 1, c);
  if (m < p) update(p, m + 1, r, rt << 1 | 1, c);
  pushup(rt);
}
void query(int L, int R, int l, int r, int rt) {
  if (L > R) return;
  if (L <= l && R >= r) {
    tmax = max(tmax, Max[rt]);
    tmin = min(tmin, Min[rt]);
    xfg = min(xfg, sum[rt]);
    return;
  }
  int m = (l + r) >> 1;
  if (L <= m) query(L, R, l, m, rt << 1);
  if (R > m) query(L, R, m + 1, r, rt << 1 | 1);
}
int dp[155555];
int pan(int x, int p) {
  tmax = -1999999999;
  tmin = 1999999999;
  xfg = 1999999999;
  query(x, p, 1, n, 1);
  if (tmax - tmin <= s) return 1;
  return 0;
}
int main() {
  cin >> n >> s >> L;
  for (int i = 1; i <= n; i++) cin >> a[i];
  if (L > n) {
    cout << -1;
    return 0;
  }
  build(1, n, 1);
  for (int i = 1; i <= n; i++) dp[i] = 1999999999;
  for (int i = L; i <= n; i++) {
    int le, re;
    le = 1;
    re = i;
    for (int _ = 1; _ < 40; _++) {
      int mid = (le + re) >> 1;
      if (pan(mid, i))
        re = mid;
      else
        le = mid;
    }
    if (re == 1) {
      dp[i] = 1;
      update(i, 1, n, 1, 1);
      continue;
    }
    if (i - re + 1 < L) continue;
    xfg = 1999999999;
    query(re - 1, i - L, 1, n, 1);
    dp[i] = xfg + 1;
    update(i, 1, n, 1, dp[i]);
  }
  if (dp[n] > n)
    cout << -1;
  else
    cout << dp[n];
  return 0;
}
