#include <algorithm>
#include <bits/stdc++.h>
#include <queue>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
using i128 = __int128;
#define endl '\n'
#define cty cout<<"Yes"<<endl
#define ctn cout<<"No"<<endl
#define dbg(x) cout<<#x<<" : "<<x<<endl
#define int long long
const int mxn = 2e5+10;
const int mod = 998244353;
double ST,ED;
int n,l,r;
int a[mxn];
int dp[mxn];
void LonelyLunar_solve(){
cin>>n>>l>>r;
for(int i = 0;i <= n; i++){
cin>>a[i];
}
if(l==r){
int res = 0;
for(int i = 0;i <= n; i+=l){
res+=a[i];
}
cout<<res<<endl;
return;
}
priority_queue<int> pq,pq2;
for(int i = 0;i < l; i++) pq2.push(a[i]);
for(int i = l;i <= n; i++){
pq.push(dp[i-l]);
if(i-r-1>=l) pq2.push(dp[i-r-1]);
while(!pq2.empty()&&pq.top()==pq2.top()){
pq.pop();
pq2.pop();
}
dp[i] = pq.top()+a[i];
}
int res = -1e9;
for(int i = n-r+1;i <= n; i++) res = max(res,dp[i]);
cout<<res<<endl;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int _ = 1;
//ST = clock();
//cin>>_;
while(_--){
LonelyLunar_solve();
}
//ED = clock();
//cerr<<1000*(ED-ST)/CLOCKS_PER_SEC<<"ms\n";
return 0;
}