#include <bits/stdc++.h>
#define _nhatminh int main()
#define ll long long
#define str string
#define fir first
#define sec second
#define ld long double
#define pb push_back
#define MOD 100000009
#define freopen(name) if(fopen(name".INP","r")) {freopen (name".INP","r",stdin); freopen (name".OUT","w",stdout);}
#define ALL(x) (x).begin(),(x).end()
#define piint pair < int , int >
#define piL pair < int , ll>
#define pLL pair < ll , ll >
#define TIME (1.0*clock()/CLOCKS_PER_SEC)
using namespace std;
const int Max_n=1e6;
const int Max_m = 4 * Max_n ;
multiset < int > b[Max_m+3] ;
int s[Max_n+3] ;
int s_size ;
void cal_size(int size) {
s_size = size;
for (int i = 0 ; i <= s_size * 2 ; i ++ )
s[i] = 1e9 ;
for (int i = 0; i < s_size ; i++)
b[i].clear();
}
void update(int id, int val) {
id += s_size;
s[id] = val;
for ( id /= 2; id > 0; id /= 2){
s[id] = min(s[2 * id], s[2 * id + 1]);
}
}
void get(int l, int r, int& res) {
res = 1e9;
l += s_size; r += s_size;
while (l <= r) {
if (l % 2 == 1) res = min(res, s[l++]);
if (r % 2 == 0) res = min(res, s[r--]);
l >>= 1; r >>= 1;
}
}
int n , l , r , k ;
ll p[Max_n+3] ;
int a[Max_n+3];
int rankQ[Max_n + 1];
int dp[Max_n+1] ;
bool check ( int x ){
fill ( p , p + n + 1 , 0 ) ;
for (int i = 1 ; i <= n ; i ++ ){
p[i] = p[i-1] + a[i-1] ;
}
ll sortedQ[n + 1] , q[n+1];
for (int i = 0 ; i <= n ; i ++ ){
q[i] = p[i] - 1ll * x * i ;
}
memcpy(sortedQ, q, sizeof(q));
sort(sortedQ, sortedQ + n + 1);
int m = unique(sortedQ, sortedQ + n + 1) - sortedQ;
// what should we do now ?
//
for (int i = 0; i <= n; i++)
rankQ[i] = lower_bound(sortedQ, sortedQ + m, q[i]) - sortedQ;
for (int i = 0 ; i <= n + 1 ; i ++ )
dp[i] = 1e9 ;
dp[0] = 0 ;
// truong hop co so
cal_size ( m ) ;
// add chi so
auto add = [&](int j) {
int r = rankQ[j];
b[r].insert(dp[j]);
update(r, *b[r].begin());
};
auto del = [&](int j) {
int r = rankQ[j];
auto it = b[r].find(dp[j]);
if (it != b[r].end()) b[r].erase(it);
update(r, b[r].empty() ? 1e9 : *b[r].begin());
};
for (int i = 1; i <= n; i++) {
if (i - l >= 0) add(i - l);
if (i - r - 1 >= 0) del(i - r - 1);
if (i - l >= 0) {
int r = rankQ[i];
int minn = 1e9, temp = 1e9;
get(0, r, minn);
if (minn < 1e9) minn++;
get (r + 1, m - 1, temp);
dp[i] = min(minn, temp);
}
}
return dp[n] >= k;
}
//int a[Max_n+3] ;
void solve(){
cin >> n >> l >> r >> k ;
int max_A = 0 ;
for (int i = 0 ; i < n ; i ++ ) {
cin >> a[i] ;
max_A = max ( a[i] , max_A );
}
int res ;
int lo = 0 , hi = max_A + 1 ;
while ( lo <= hi ){
int m = ( lo + hi ) >> 1 ;
if ( check ( m )){
res = m ;
lo = m +1 ;
}
else hi = m - 1 ;
}
cout << res ;
}
_nhatminh{
freopen("");
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int q=1;
// cin >> q;
while (q--)
solve();
cerr << '\n' << "Time elapsed " << TIME << "s.\n";
return (0);
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgX25oYXRtaW5oICBpbnQgbWFpbigpCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgc3RyIHN0cmluZwojZGVmaW5lIGZpciBmaXJzdAojZGVmaW5lIHNlYyBzZWNvbmQKI2RlZmluZSBsZCBsb25nIGRvdWJsZQojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIE1PRCAxMDAwMDAwMDkKI2RlZmluZSBmcmVvcGVuKG5hbWUpIGlmKGZvcGVuKG5hbWUiLklOUCIsInIiKSkge2ZyZW9wZW4gKG5hbWUiLklOUCIsInIiLHN0ZGluKTsgZnJlb3BlbiAobmFtZSIuT1VUIiwidyIsc3Rkb3V0KTt9CiNkZWZpbmUgQUxMKHgpICh4KS5iZWdpbigpLCh4KS5lbmQoKQojZGVmaW5lIHBpaW50IHBhaXIgPCBpbnQgLCBpbnQgPgojZGVmaW5lIHBpTCBwYWlyIDwgaW50ICwgbGw+CiNkZWZpbmUgcExMIHBhaXIgPCBsbCAsIGxsID4KI2RlZmluZSBUSU1FICgxLjAqY2xvY2soKS9DTE9DS1NfUEVSX1NFQykKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IE1heF9uPTFlNjsKY29uc3QgaW50IE1heF9tID0gNCAqIE1heF9uIDsKbXVsdGlzZXQgPCBpbnQgPiBiW01heF9tKzNdIDsKaW50IHNbTWF4X24rM10gOwppbnQgc19zaXplIDsKdm9pZCBjYWxfc2l6ZShpbnQgc2l6ZSkgewogICAgc19zaXplID0gc2l6ZTsKICAgIGZvciAoaW50IGkgPSAwIDsgaSA8PSBzX3NpemUgKiAyIDsgaSArKyApCiAgICAJc1tpXSA9IDFlOSA7IAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzX3NpemUgOyBpKyspCiAgICAgICAgYltpXS5jbGVhcigpOwp9CnZvaWQgdXBkYXRlKGludCBpZCwgaW50IHZhbCkgewogICAgaWQgKz0gc19zaXplOwogICAgc1tpZF0gPSB2YWw7CiAgICBmb3IgKCBpZCAvPSAyOyBpZCA+IDA7IGlkIC89IDIpewogICAgICAgIHNbaWRdID0gbWluKHNbMiAqIGlkXSwgc1syICogaWQgKyAxXSk7CiAgICB9Cn0Kdm9pZCBnZXQoaW50IGwsIGludCByLCBpbnQmIHJlcykgewogICAgcmVzID0gMWU5OwogICAgbCArPSBzX3NpemU7IHIgKz0gc19zaXplOwogICAgd2hpbGUgKGwgPD0gcikgewogICAgICAgIGlmIChsICUgMiA9PSAxKSByZXMgPSBtaW4ocmVzLCBzW2wrK10pOwogICAgICAgIGlmIChyICUgMiA9PSAwKSByZXMgPSBtaW4ocmVzLCBzW3ItLV0pOwogICAgICAgIGwgPj49IDE7IHIgPj49IDE7CiAgICB9Cn0KaW50IG4gLCBsICwgciAsIGsgOyAKbGwgcFtNYXhfbiszXSA7CmludCBhW01heF9uKzNdOyAKaW50IHJhbmtRW01heF9uICsgMV07CmludCBkcFtNYXhfbisxXSA7CmJvb2wgY2hlY2sgKCBpbnQgeCApewoJZmlsbCAoIHAgLCBwICsgbiArIDEgLCAwICkgIDsKCWZvciAoaW50IGkgPSAxIDsgaSA8PSBuIDsgaSArKyApewoJCXBbaV0gPSBwW2ktMV0gKyBhW2ktMV0gOwoJfQoJbGwgc29ydGVkUVtuICsgMV0gLCBxW24rMV07Cglmb3IgKGludCBpID0gMCA7IGkgPD0gbiA7IGkgKysgKXsKCQlxW2ldID0gcFtpXSAtIDFsbCAqIHggKiBpIDsgCgl9CgltZW1jcHkoc29ydGVkUSwgcSwgc2l6ZW9mKHEpKTsKCXNvcnQoc29ydGVkUSwgc29ydGVkUSArIG4gKyAxKTsKCWludCBtID0gdW5pcXVlKHNvcnRlZFEsIHNvcnRlZFEgKyBuICsgMSkgLSBzb3J0ZWRROwoJLy8gd2hhdCBzaG91bGQgd2UgZG8gbm93ID8gCgkvLyAKICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IG47IGkrKykKICAgICAgIHJhbmtRW2ldID0gbG93ZXJfYm91bmQoc29ydGVkUSwgc29ydGVkUSArIG0sIHFbaV0pIC0gc29ydGVkUTsKICAgZm9yIChpbnQgaSA9IDAgOyBpIDw9IG4gKyAxIDsgaSArKyApCiAgIAkJZHBbaV0gPSAxZTkgOyAKICAgCWRwWzBdID0gMCA7CiAgIAkvLyB0cnVvbmcgaG9wIGNvIHNvIAogICAJY2FsX3NpemUgKCBtICkgOwogICAJLy8gYWRkIGNoaSBzbwogCWF1dG8gYWRkID0gWyZdKGludCBqKSB7CiAgICAgICAgaW50IHIgPSByYW5rUVtqXTsKICAgICAgICBiW3JdLmluc2VydChkcFtqXSk7CiAgICAgICAgdXBkYXRlKHIsICpiW3JdLmJlZ2luKCkpOwogICAgfTsKICAgIGF1dG8gZGVsID0gWyZdKGludCBqKSB7CiAgICAgICAgaW50IHIgPSByYW5rUVtqXTsKICAgICAgICBhdXRvIGl0ID0gYltyXS5maW5kKGRwW2pdKTsKICAgICAgICBpZiAoaXQgIT0gYltyXS5lbmQoKSkgYltyXS5lcmFzZShpdCk7CiAgICAgICAgdXBkYXRlKHIsIGJbcl0uZW1wdHkoKSA/IDFlOSA6ICpiW3JdLmJlZ2luKCkpOwogICAgfTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewogICAgICAgIGlmIChpIC0gbCA+PSAwKSBhZGQoaSAtIGwpOwogICAgICAgIGlmIChpIC0gciAtIDEgPj0gMCkgZGVsKGkgLSByIC0gMSk7CgogICAgICAgIGlmIChpIC0gbCA+PSAwKSB7CiAgICAgICAgICAgIGludCByID0gcmFua1FbaV07CiAgICAgICAgICAgIGludCBtaW5uID0gMWU5LCB0ZW1wID0gMWU5OwogICAgICAgICAgICBnZXQoMCwgciwgbWlubik7CiAgICAgICAgICAgIGlmIChtaW5uIDwgMWU5KSBtaW5uKys7CiAgICAgICAgICAgIGdldCAociArIDEsIG0gLSAxLCB0ZW1wKTsKICAgICAgICAgICAgZHBbaV0gPSBtaW4obWlubiwgdGVtcCk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBkcFtuXSA+PSBrOwp9Ci8vaW50IGFbTWF4X24rM10gOwp2b2lkIHNvbHZlKCl7CgljaW4gPj4gbiA+PiBsID4+IHIgPj4gayA7CglpbnQgbWF4X0EgPSAwIDsKCWZvciAoaW50IGkgPSAwIDsgaSA8IG4gOyBpICsrICkgewoJCgkJY2luID4+IGFbaV0gOwoJCW1heF9BID0gbWF4ICggYVtpXSAsIG1heF9BICk7Cgl9CglpbnQgcmVzIDsgCglpbnQgbG8gPSAwICwgaGkgPSBtYXhfQSArIDEgOwoJd2hpbGUgKCBsbyA8PSBoaSApewoJCWludCBtID0gKCBsbyArIGhpICkgPj4gMSA7CgkJaWYgKCBjaGVjayAoIG0gKSl7CgkJCXJlcyA9IG0gOwoJCQlsbyA9IG0gKzEgIDsKCQl9CgkJZWxzZSBoaSA9IG0gLSAxIDsKCX0KCWNvdXQgPDwgcmVzIDsgCn0KX25oYXRtaW5oewpmcmVvcGVuKCIiKTsKaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKY2luLnRpZSgwKTsgY291dC50aWUoMCk7CmludCBxPTE7Ci8vIGNpbiA+PiBxOwp3aGlsZSAocS0tKQoJc29sdmUoKTsKY2VyciA8PCAnXG4nIDw8ICJUaW1lIGVsYXBzZWQgIiA8PCBUSU1FIDw8ICJzLlxuIjsKcmV0dXJuICgwKTsKfQ==