#include<bits/stdc++.h>
using namespace std;
int N,L,R;
int f[20005];int num[20005];
struct PII{
int num;int time;
};
deque<PII> dq;
void go_in(int n,int i){
PII t;
if(!dq.empty()){
if(dq.front().time<i-R+1) dq.pop_front();
}
while(!dq.empty() && dq.back().num <= n) dq.pop_back();
t.num=n;t.time=i;dq.push_back(t);
}
void solve(){
int ans=-1e8;
cin>>N>>L>>R;
for(int i=0;i<=N;i++){
cin>>num[i];
}
memset(f, 0x80, sizeof(f));
f[0]=0;
for(int i=L;i<=N;i++){
go_in(f[i-L],i-L);
int from=dq.front().time;
f[i]=f[from]+num[i];
if(i+R > N ) ans=max(ans,f[i]);
}
cout<<ans<<endl;
}
int main(){
solve();
}