#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;
typedef long long ll;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int n, d;
ll p;
if (!(cin >> n >> p >> d)) return 0;
vector<ll> w(n);
vector<ll> pref(n + 1, 0);
for (int i = 0; i < n; ++i) {
cin >> w[i];
pref[i + 1] = pref[i] + w[i];
}
auto get_sum = [&](int l, int r) {
if (l > r) return 0LL;
return pref[r + 1] - pref[l];
};
auto get_cost = [&](int l, int r, ll max_decha_sum) {
return get_sum(l, r) - max_decha_sum;
};
deque<int> dq;
int left = 0;
int max_len = 0;
for (int right = 0; right < n; ++right) {
int decha_start = right - d + 1;
if (decha_start >= 0) {
ll current_decha_sum = get_sum(decha_start, right);
while (!dq.empty() && get_sum(dq.back(), dq.back() + d - 1) <= current_decha_sum) {
dq.pop_back();
}
dq.push_back(decha_start);
}
while (!dq.empty() && dq.front() < left) {
dq.pop_front();
}
while (left <= right) {
ll best_decha = 0;
if (!dq.empty()) {
best_decha = get_sum(dq.front(), dq.front() + d - 1);
}
if (right - left + 1 <= d) {
if (get_sum(left, right) - get_sum(left, right) <= p) break;
} else {
if (get_cost(left, right, best_decha) <= p) break;
}
left++;
while (!dq.empty() && dq.front() < left) {
dq.pop_front();
}
}
max_len = max(max_len, right - left + 1);
}
cout << max_len << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZGVxdWU+CiNpbmNsdWRlIDxhbGdvcml0aG0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKdHlwZWRlZiBsb25nIGxvbmcgbGw7CgppbnQgbWFpbigpIHsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKCiAgICBpbnQgbiwgZDsKICAgIGxsIHA7CiAgICBpZiAoIShjaW4gPj4gbiA+PiBwID4+IGQpKSByZXR1cm4gMDsKCiAgICB2ZWN0b3I8bGw+IHcobik7CiAgICB2ZWN0b3I8bGw+IHByZWYobiArIDEsIDApOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpIHsKICAgICAgICBjaW4gPj4gd1tpXTsKICAgICAgICBwcmVmW2kgKyAxXSA9IHByZWZbaV0gKyB3W2ldOwogICAgfQoKICAgIGF1dG8gZ2V0X3N1bSA9IFsmXShpbnQgbCwgaW50IHIpIHsKICAgICAgICBpZiAobCA+IHIpIHJldHVybiAwTEw7CiAgICAgICAgcmV0dXJuIHByZWZbciArIDFdIC0gcHJlZltsXTsKICAgIH07CgogICAgYXV0byBnZXRfY29zdCA9IFsmXShpbnQgbCwgaW50IHIsIGxsIG1heF9kZWNoYV9zdW0pIHsKICAgICAgICByZXR1cm4gZ2V0X3N1bShsLCByKSAtIG1heF9kZWNoYV9zdW07CiAgICB9OwoKICAgIGRlcXVlPGludD4gZHE7CiAgICBpbnQgbGVmdCA9IDA7CiAgICBpbnQgbWF4X2xlbiA9IDA7CgogICAgZm9yIChpbnQgcmlnaHQgPSAwOyByaWdodCA8IG47ICsrcmlnaHQpIHsKICAgICAgICBpbnQgZGVjaGFfc3RhcnQgPSByaWdodCAtIGQgKyAxOwogICAgICAgIGlmIChkZWNoYV9zdGFydCA+PSAwKSB7CiAgICAgICAgICAgIGxsIGN1cnJlbnRfZGVjaGFfc3VtID0gZ2V0X3N1bShkZWNoYV9zdGFydCwgcmlnaHQpOwogICAgICAgICAgICB3aGlsZSAoIWRxLmVtcHR5KCkgJiYgZ2V0X3N1bShkcS5iYWNrKCksIGRxLmJhY2soKSArIGQgLSAxKSA8PSBjdXJyZW50X2RlY2hhX3N1bSkgewogICAgICAgICAgICAgICAgZHEucG9wX2JhY2soKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBkcS5wdXNoX2JhY2soZGVjaGFfc3RhcnQpOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKCFkcS5lbXB0eSgpICYmIGRxLmZyb250KCkgPCBsZWZ0KSB7CiAgICAgICAgICAgIGRxLnBvcF9mcm9udCgpOwogICAgICAgIH0KCiAgICAgICAgd2hpbGUgKGxlZnQgPD0gcmlnaHQpIHsKICAgICAgICAgICAgbGwgYmVzdF9kZWNoYSA9IDA7CiAgICAgICAgICAgIGlmICghZHEuZW1wdHkoKSkgewogICAgICAgICAgICAgICAgYmVzdF9kZWNoYSA9IGdldF9zdW0oZHEuZnJvbnQoKSwgZHEuZnJvbnQoKSArIGQgLSAxKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHJpZ2h0IC0gbGVmdCArIDEgPD0gZCkgewogICAgICAgICAgICAgICAgaWYgKGdldF9zdW0obGVmdCwgcmlnaHQpIC0gZ2V0X3N1bShsZWZ0LCByaWdodCkgPD0gcCkgYnJlYWs7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoZ2V0X2Nvc3QobGVmdCwgcmlnaHQsIGJlc3RfZGVjaGEpIDw9IHApIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBsZWZ0Kys7CiAgICAgICAgICAgIHdoaWxlICghZHEuZW1wdHkoKSAmJiBkcS5mcm9udCgpIDwgbGVmdCkgewogICAgICAgICAgICAgICAgZHEucG9wX2Zyb250KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbWF4X2xlbiA9IG1heChtYXhfbGVuLCByaWdodCAtIGxlZnQgKyAxKTsKICAgIH0KCiAgICBjb3V0IDw8IG1heF9sZW4gPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQ==