#include<bits/stdc++.h>
#define ll long long
#define nl "\n"
#define all(v) v.begin(),v.end()
#define baraa ios_base::sync_with_stdio(false);cin.tie(NULL);
using namespace std;
priority_queue<ll, vector<ll>, greater<ll> > q;
ll findMaxAttraction(int n, int start, int d, int attraction[]) {
ll res = 0, res2 = 0;
vector<ll> v;
for (int l = start; l >= 0; l--) {
ll sum = 0;
priority_queue<ll, vector<ll>, greater<ll> > temp;
swap(q, temp);
for (int i = l; i <= start; i++) {
q.push(attraction[i]);
sum += attraction[i];
int req = d - (start - l);
if (req <= 0) {
sum = -1;
break;
}
while (q.size() > req) {
sum -= q.top();
q.pop();
}
res = max(res, sum);
}
if (sum == -1) continue;
ll res3 = 0;
for (int r = start + 1; r < n; r++) {
q.push(attraction[r]);
sum += attraction[r];
int req = d - (r - l + min(start - l, r - start));
if (req <= 0) {
break;
}
while (q.size() > req) {
sum -= q.top();
q.pop();
}
res = max(res, sum);
res3 = max(res3, sum);
}
v.push_back(res3);
}
ll cnt = 0;
for (ll i = 1; i + 1 < v.size(); i++)cnt += (v[i] > v[i - 1] and v[i] > v[i + 1]);
assert(cnt <= 10);
return res;
}
// int main() {
// int n, start, d;
// cin >> n >> start >> d;
// int arr[n];
// for (ll i = 0; i < n; i++)cin >> arr[i];
// cout << findMaxAttraction(n, start, d, arr);
// return 0;
// }