#include <bits/stdc++.h>
using namespace std;
const long long inf = 1000000000000005;
const int MAXN = 100005;
long long MAX[MAXN << 2];
long long MIN[MAXN << 2];
long long a[MAXN];
long long dp[MAXN];
void PushUPmax(long long rt) { MAX[rt] = max(MAX[rt << 1], MAX[rt << 1 | 1]); }
void buildmax(long long l, long long r, long long rt) {
  if (l == r) {
    MAX[rt] = a[l];
    return;
  }
  long long m = (l + r) >> 1;
  buildmax(l, m, rt << 1);
  buildmax(m + 1, r, rt << 1 | 1);
  PushUPmax(rt);
}
long long querymax(long long L, long long R, long long l, long long r,
                   long long rt) {
  if (L <= l && r <= R) {
    return MAX[rt];
  }
  long long m = (l + r) >> 1;
  long long ret = -inf;
  if (L <= m) ret = max(ret, querymax(L, R, l, m, rt << 1));
  if (R > m) ret = max(ret, querymax(L, R, m + 1, r, rt << 1 | 1));
  return ret;
}
void PushUPmin(long long rt) { MIN[rt] = min(MIN[rt << 1], MIN[rt << 1 | 1]); }
void buildmin(long long l, long long r, long long rt) {
  if (l == r) {
    MIN[rt] = a[l];
    return;
  }
  long long m = (l + r) >> 1;
  buildmin(l, m, rt << 1);
  buildmin(m + 1, r, rt << 1 | 1);
  PushUPmin(rt);
}
long long querymin(long long L, long long R, long long l, long long r,
                   long long rt) {
  if (L <= l && r <= R) {
    return MIN[rt];
  }
  long long m = (l + r) >> 1;
  long long ret = inf;
  if (L <= m) ret = min(ret, querymin(L, R, l, m, rt << 1));
  if (R > m) ret = min(ret, querymin(L, R, m + 1, r, rt << 1 | 1));
  return ret;
}
int main() {
  long long m, n, i, j, k;
  ios::sync_with_stdio(false);
  ;
  scanf("%I64d%I64d%I64d", &n, &m, &k);
  for (i = 1; i <= n; i++) scanf("%I64d", &a[i]), dp[i] = inf;
  buildmax(1, n, 1);
  buildmin(1, n, 1);
  long long l = 0, r = 1;
  for (r = k; r <= n; r++) {
    while (r - l >= k &&
           ((querymax(l + 1, r, 1, n, 1) - querymin(l + 1, r, 1, n, 1)) > m ||
            dp[l] == inf))
      l++;
    if (r - l >= k) dp[r] = min(dp[r], dp[l] + 1);
  }
  if (dp[n] == inf)
    cout << -1 << endl;
  else
    cout << dp[n] << endl;
}
