#include<bits/stdc++.h>
using namespace std;
const int Maxn=200010;
priority_queue<int> q1,q2;
int n,ll,rr;
int arr[Maxn],dp[Maxn];
int main(){
cin>>n>>ll>>rr;
n++;
for (int i=1;i<=n;i++)
{
cin>>arr[i];
dp[i]=arr[i];
}
for (int i=n-ll;i>=1;i--)
{
int x1=0,x2=0;
q1.push(dp[i+ll]);
if (i<n-rr)
q2.push(dp[i+rr+1]);
if (q2.empty())
{
x1=q1.top();
}
else
{
x1=q1.top();
x2=q2.top();
}
while (x1==x2 && !q2.empty())
{
x1=q1.top();
x2=q2.top();
q2.pop();
q1.pop();
}
if (i>n-rr)
{
dp[i]=max(dp[i],dp[i]+x1);
}
else
{
dp[i]=dp[i]+x1;
}
}
cout<<dp[1];
}