#include<bits/stdc++.h>
#define int long long
#define up(l,r,i) for(int i=l,END##i=r;i<=END##i;++i)
#define dn(r,l,i) for(int i=r,END##i=l;i>=END##i;--i)
using namespace std;
int in(){
int f=1,x=0;char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=(x<<1)+(x<<3)+(c^48);c=getchar();}
return f*x;
}
int n=in(),a[400005],l=in(),r=in(),f[400005],q[400005],tail=0,head=1;
signed main(){
up(0,n,i) a[i]=in();
int ans=(int)-1e9;
up(l,n,i){
while(f[i-l]>f[q[tail]]&&tail>=head) tail--;
q[++tail]=i-l;
while(q[head]+r<i) head++;
int from=q[head];
f[i]=f[from]+a[i];
if(i+r>=n) ans=max(ans,f[i]);
}
printf("%lld",ans);
return 0;
}