#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 500000;
const int MAXM = 20;
const ll INF = 1e18;
int n, k, m;
vector<int> a;
vector<int> R;
vector<int> L;
vector<vector<ll>> dp;
void computeR() {
R.resize(n + 1);
unordered_map<int, int> freq;
deque<int> min_deq, max_deq;
int r = 1;
for (int l = 1; l <= n; l++) {
if (r < l) r = l;
while (r <= n) {
if (freq[a[r]] > 0) {
break;
}
freq[a[r]]++;
while (!min_deq.empty() && a[min_deq.back()] >= a[r]) {
min_deq.pop_back();
}
min_deq.push_back(r);
while (!max_deq.empty() && a[max_deq.back()] <= a[r]) {
max_deq.pop_back();
}
max_deq.push_back(r);
int current_min = a[min_deq.front()];
int current_max = a[max_deq.front()];
if (current_max - current_min > k) {
freq[a[r]]--;
min_deq.pop_back();
max_deq.pop_back();
break;
}
r++;
}
R[l] = r - 1;
freq[a[l]]--;
if (!min_deq.empty() && min_deq.front() == l) {
min_deq.pop_front();
}
if (!max_deq.empty() && max_deq.front() == l) {
max_deq.pop_front();
}
}
}
void computeL() {
L.resize(n + 1);
int l0 = 1;
for (int i = 1; i <= n; i++) {
while (l0 <= i && R[l0] < i) {
l0++;
}
L[i] = l0;
}
}
void solve() {
dp.assign(n + 1, vector<ll>(m + 1, -INF));
for (int i = 0; i <= n; i++) {
dp[i][0] = 0;
}
for (int j = 1; j <= m; j++) {
deque<int> dq;
for (int i = 1; i <= n; i++) {
while (!dq.empty() && dq.front() < L[i]) {
dq.pop_front();
}
if (dp[i - 1][j - 1] != -INF) {
ll g_i = dp[i - 1][j - 1] - i + 1;
while (!dq.empty()) {
int last = dq.back();
ll g_last = dp[last - 1][j - 1] - last + 1;
if (g_last <= g_i) {
dq.pop_back();
} else {
break;
}
}
dq.push_back(i);
}
ll best = -INF;
if (!dq.empty()) {
int l0 = dq.front();
best = dp[l0 - 1][j - 1] - l0 + 1 + i;
}
dp[i][j] = max(dp[i - 1][j], best);
}
}
ll ans = dp[n][m];
if (ans < 0) ans = 0;
cout << ans << endl;
}
int main() {
freopen("PERFECT.inp", "r", stdin);
freopen("PERFECT.out", "w", stdout);
ios_base::sync_with_stdio(false);
cin.tie(0);
cin >> n >> k >> m;
a.resize(n + 1);
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
computeR();
computeL();
solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnR5cGVkZWYgbG9uZyBsb25nIGxsOwpjb25zdCBpbnQgTUFYTiA9IDUwMDAwMDsKY29uc3QgaW50IE1BWE0gPSAyMDsKY29uc3QgbGwgSU5GID0gMWUxODsKCmludCBuLCBrLCBtOwp2ZWN0b3I8aW50PiBhOwp2ZWN0b3I8aW50PiBSOwp2ZWN0b3I8aW50PiBMOwp2ZWN0b3I8dmVjdG9yPGxsPj4gZHA7Cgp2b2lkIGNvbXB1dGVSKCkgewogICAgUi5yZXNpemUobiArIDEpOwogICAgdW5vcmRlcmVkX21hcDxpbnQsIGludD4gZnJlcTsKICAgIGRlcXVlPGludD4gbWluX2RlcSwgbWF4X2RlcTsKICAgIGludCByID0gMTsKICAgIGZvciAoaW50IGwgPSAxOyBsIDw9IG47IGwrKykgewogICAgICAgIGlmIChyIDwgbCkgciA9IGw7CiAgICAgICAgd2hpbGUgKHIgPD0gbikgewogICAgICAgICAgICBpZiAoZnJlcVthW3JdXSA+IDApIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZyZXFbYVtyXV0rKzsKICAgICAgICAgICAgd2hpbGUgKCFtaW5fZGVxLmVtcHR5KCkgJiYgYVttaW5fZGVxLmJhY2soKV0gPj0gYVtyXSkgewogICAgICAgICAgICAgICAgbWluX2RlcS5wb3BfYmFjaygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG1pbl9kZXEucHVzaF9iYWNrKHIpOwogICAgICAgICAgICB3aGlsZSAoIW1heF9kZXEuZW1wdHkoKSAmJiBhW21heF9kZXEuYmFjaygpXSA8PSBhW3JdKSB7CiAgICAgICAgICAgICAgICBtYXhfZGVxLnBvcF9iYWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbWF4X2RlcS5wdXNoX2JhY2socik7CiAgICAgICAgICAgIGludCBjdXJyZW50X21pbiA9IGFbbWluX2RlcS5mcm9udCgpXTsKICAgICAgICAgICAgaW50IGN1cnJlbnRfbWF4ID0gYVttYXhfZGVxLmZyb250KCldOwogICAgICAgICAgICBpZiAoY3VycmVudF9tYXggLSBjdXJyZW50X21pbiA+IGspIHsKICAgICAgICAgICAgICAgIGZyZXFbYVtyXV0tLTsKICAgICAgICAgICAgICAgIG1pbl9kZXEucG9wX2JhY2soKTsKICAgICAgICAgICAgICAgIG1heF9kZXEucG9wX2JhY2soKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHIrKzsKICAgICAgICB9CiAgICAgICAgUltsXSA9IHIgLSAxOwogICAgICAgIGZyZXFbYVtsXV0tLTsKICAgICAgICBpZiAoIW1pbl9kZXEuZW1wdHkoKSAmJiBtaW5fZGVxLmZyb250KCkgPT0gbCkgewogICAgICAgICAgICBtaW5fZGVxLnBvcF9mcm9udCgpOwogICAgICAgIH0KICAgICAgICBpZiAoIW1heF9kZXEuZW1wdHkoKSAmJiBtYXhfZGVxLmZyb250KCkgPT0gbCkgewogICAgICAgICAgICBtYXhfZGVxLnBvcF9mcm9udCgpOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBjb21wdXRlTCgpIHsKICAgIEwucmVzaXplKG4gKyAxKTsKICAgIGludCBsMCA9IDE7CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICB3aGlsZSAobDAgPD0gaSAmJiBSW2wwXSA8IGkpIHsKICAgICAgICAgICAgbDArKzsKICAgICAgICB9CiAgICAgICAgTFtpXSA9IGwwOwogICAgfQp9Cgp2b2lkIHNvbHZlKCkgewogICAgZHAuYXNzaWduKG4gKyAxLCB2ZWN0b3I8bGw+KG0gKyAxLCAtSU5GKSk7CiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspIHsKICAgICAgICBkcFtpXVswXSA9IDA7CiAgICB9CiAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICBkZXF1ZTxpbnQ+IGRxOwogICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgICAgICB3aGlsZSAoIWRxLmVtcHR5KCkgJiYgZHEuZnJvbnQoKSA8IExbaV0pIHsKICAgICAgICAgICAgICAgIGRxLnBvcF9mcm9udCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChkcFtpIC0gMV1baiAtIDFdICE9IC1JTkYpIHsKICAgICAgICAgICAgICAgIGxsIGdfaSA9IGRwW2kgLSAxXVtqIC0gMV0gLSBpICsgMTsKICAgICAgICAgICAgICAgIHdoaWxlICghZHEuZW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgIGludCBsYXN0ID0gZHEuYmFjaygpOwogICAgICAgICAgICAgICAgICAgIGxsIGdfbGFzdCA9IGRwW2xhc3QgLSAxXVtqIC0gMV0gLSBsYXN0ICsgMTsKICAgICAgICAgICAgICAgICAgICBpZiAoZ19sYXN0IDw9IGdfaSkgewogICAgICAgICAgICAgICAgICAgICAgICBkcS5wb3BfYmFjaygpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGRxLnB1c2hfYmFjayhpKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBsbCBiZXN0ID0gLUlORjsKICAgICAgICAgICAgaWYgKCFkcS5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICBpbnQgbDAgPSBkcS5mcm9udCgpOwogICAgICAgICAgICAgICAgYmVzdCA9IGRwW2wwIC0gMV1baiAtIDFdIC0gbDAgKyAxICsgaTsKICAgICAgICAgICAgfQogICAgICAgICAgICBkcFtpXVtqXSA9IG1heChkcFtpIC0gMV1bal0sIGJlc3QpOwogICAgICAgIH0KICAgIH0KICAgIGxsIGFucyA9IGRwW25dW21dOwogICAgaWYgKGFucyA8IDApIGFucyA9IDA7CiAgICBjb3V0IDw8IGFucyA8PCBlbmRsOwp9CgppbnQgbWFpbigpIHsKICAgIGZyZW9wZW4oIlBFUkZFQ1QuaW5wIiwgInIiLCBzdGRpbik7CiAgICBmcmVvcGVuKCJQRVJGRUNULm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZSgwKTsKICAgIGNpbiA+PiBuID4+IGsgPj4gbTsKICAgIGEucmVzaXplKG4gKyAxKTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgY29tcHV0ZVIoKTsKICAgIGNvbXB1dGVMKCk7CiAgICBzb2x2ZSgpOwogICAgcmV0dXJuIDA7Cn0K