#include <bits/stdc++.h>
using namespace std;
const int inf = 2e9 + 10, MAXN = 1e5 + 10;
int seg[4][MAXN * 4];
int n, S, l;
void update(int ind) {
  seg[1][ind] = min(seg[1][((ind)*2)], seg[1][(((ind)*2) + 1)]);
  seg[2][ind] = max(seg[2][((ind)*2)], seg[2][(((ind)*2) + 1)]);
  seg[3][ind] = min(seg[3][((ind)*2)], seg[3][(((ind)*2) + 1)]);
}
void add(int s, int e, int ind, int x, int val, int t) {
  if (s > x or e <= x) return;
  if (s + 1 == e) {
    seg[t][ind] = val;
    return;
  }
  int mid = (s + e) / 2;
  add(s, mid, ((ind)*2), x, val, t);
  add(mid, e, (((ind)*2) + 1), x, val, t);
  update(ind);
}
int fin(int s, int e, int ind, int x, int y, int t) {
  if (s >= y or e <= x) return (t == 1 or t == 3) ? inf : -inf;
  if (s >= x and e <= y) return seg[t][ind];
  int mid = (s + e) / 2;
  if (t == 1 or t == 3)
    return min(fin(s, mid, ((ind)*2), x, y, t),
               fin(mid, e, (((ind)*2) + 1), x, y, t));
  return max(fin(s, mid, ((ind)*2), x, y, t),
             fin(mid, e, (((ind)*2) + 1), x, y, t));
}
void show() {
  for (int i = 0; i < n; i++)
    cerr << fin(0, n, 1, i, i + 1, 1) << " " << fin(0, n, 1, i, i + 1, 2)
         << endl;
}
int main() {
  scanf("%d%d%d", &n, &S, &l);
  fill(seg[1], seg[1] + MAXN * 4, inf);
  fill(seg[3], seg[3] + MAXN * 4, inf);
  for (int i = 0; i < n; i++) {
    int x;
    scanf("%d", &x);
    add(0, n, 1, i, x, 1);
    add(0, n, 1, i, x, 2);
  }
  for (int i = 0; i < n; i++) {
    int s = -1, e = i;
    while (e - s > 1) {
      int mid = (s + e) / 2;
      if (fin(0, n, 1, mid, i + 1, 2) - fin(0, n, 1, mid, i + 1, 1) <= S)
        e = mid;
      else
        s = mid;
    }
    if (e == 0 and i + 1 >= l) {
      int res = 1;
      add(0, n, 1, i, res, 3);
      if (i == n - 1) {
        printf("1\n");
        return 0;
      }
    } else if (i - e + 1 >= l) {
      int res = fin(0, n, 1, e - 1, i - l + 1, 3);
      res = min(res + 1, inf);
      add(0, n, 1, i, res, 3);
      if (i == n - 1) {
        if (res == inf)
          printf("-1\n");
        else
          printf("%d\n", res);
        return 0;
      }
    }
  }
  printf("-1\n");
  return 0;
}
