#include <iostream>
using namespace std;
const int MAX_N = 1e5;
int N, T, L, R;
int arr[MAX_N];
int check(int W){
int cnt = 1;
int sum = 0;
for(int i = 0; i < N; i++){
if(arr[i] > W){
return T + 1;
}
sum += arr[i];
if(sum > W){
cnt++;
sum = arr[i];
}
}
return cnt;
}
int main() {
cin >> N >> T >> L >> R;
for(int i = 0; i < N; i++){
cin >> arr[i];
}
R;
while(L < R){
int mid = (L + R) / 2;
if(check(mid) > T){
L = mid + 1;
}else{
R = mid;
}
}
if(check(L) > T){
cout << -1 << endl;
}else{
cout << L << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWF9OID0gMWU1OwppbnQgTiwgVCwgTCwgUjsKaW50IGFycltNQVhfTl07CgppbnQgY2hlY2soaW50IFcpewoJaW50IGNudCA9IDE7CglpbnQgc3VtID0gMDsKCWZvcihpbnQgaSA9IDA7IGkgPCBOOyBpKyspewoJCWlmKGFycltpXSA+IFcpewoJCQlyZXR1cm4gVCArIDE7CgkJfQoJCXN1bSArPSBhcnJbaV07CgkJaWYoc3VtID4gVyl7CgkJCWNudCsrOwoJCQlzdW0gPSBhcnJbaV07CgkJfQoJfQoJcmV0dXJuIGNudDsKfQoKaW50IG1haW4oKSB7CgljaW4gPj4gTiA+PiBUID4+IEwgPj4gUjsKCQoJZm9yKGludCBpID0gMDsgaSA8IE47IGkrKyl7CgkJY2luID4+IGFycltpXTsKCX0KCQoJUjsKCXdoaWxlKEwgPCBSKXsKCQlpbnQgbWlkID0gKEwgKyBSKSAvIDI7CgkJaWYoY2hlY2sobWlkKSA+IFQpewoJCQlMID0gbWlkICsgMTsKCQl9ZWxzZXsKCQkJUiA9IG1pZDsKCQl9Cgl9CglpZihjaGVjayhMKSA+IFQpewoJCWNvdXQgPDwgLTEgPDwgZW5kbDsKCX1lbHNlewoJCWNvdXQgPDwgTCA8PCBlbmRsOwoJfQoJCglyZXR1cm4gMDsKfQ==