#include<iostream>
#include<queue>
#define ll long long
using namespace std;
priority_queue<ll> dif;
ll n, m, k, r, l, a[100005], d[100005];
ll solve(ll x) {
d[m] = x;
ll sum = 0, res = 0;
while (dif.size())
dif.pop();
for (ll i = 1; i <= k; i++) {
dif.push(d[i]);
sum += d[i];
}
res += sum;
for (ll i = k + 1; i <= n; i++)
if (d[i] > dif.top()) {
sum -= dif.top();
dif.pop();
dif.push(d[i]);
sum += d[i];
res += sum;
}
return res;
}
int main() {
cin >> n >> m >> k >> l >> r;
for (ll i = 1; i <= n; i++)
cin >> d[i];
ll cnt = 0;
ll left = 0, right = 1e9;
while (left < right) {
ll mid = (left + right + 1) / 2;
if (solve(mid) <= r) {
left = mid;
cnt++;
}
else
right = mid - 1;
}
ll ans = solve(left);
if (left <= ans && right >= ans)
cout << ans;
else
cout << "-1";
return 0;
}