#include<bits/stdc++.h>
using namespace std;
int dp[800010],n,l,r,a[800010];
priority_queue<int>q1,q2;
int main(){
cin>>n>>l>>r;
for(int i=0;i<=n;i++) cin>>a[i];
for(int i=1;i<l;i++) q2.push(a[i]);
memset(dp,128,sizeof dp);
// cout<<dp[1];
dp[0]=0;
// if(l==r){
// // for(int i=l;i<=n+l;i++){
// // int j=i-l;
// // dp[i]=max(dp[i],dp[j]+a[i]);
// // }
// // int ans=-0x3f3f3f3f;
// // for(int i=n-r+1;i<=n;i++)
// // ans=max(ans,dp[i]);
// // cout<<ans;
// cout<<-3;
// }
for(int i=l;i<=n;i++){
q1.push(dp[i-l]);
// for(int j=0;j<min(i,n);j++){
if(i-r-1>=l) q2.push(dp[i-r-1]);
while(!q2.empty() && q1.top()==q2.top()){
// dp[i]=max(dp[i],dp[j]+a[i]);
q1.pop(),q2.pop();
}
dp[i]=q1.top()+a[i];
// }
}
int ans=-0x3f3f3f3f;
for(int i=n-r+1;i<=n;i++)
ans=max(ans,dp[i]);
cout<<ans;
}
/* while(l<=r&&q[r]<f[i])r--;
r++;q[r]=f[i],t[r]=i;
while(l<=r&&i+L-t[l]>R)l++;*/