#include <iostream>
#include <algorithm>
using namespace std;
const int inf=0x3f3f3f3f;
int dp[200001];
int maxq[200001];
int num[200001];
int main()
{
int n,l,r;
scanf("%d%d%d",&n,&l,&r);
for(int i=1;i<=n;i++) scanf("%d",&num[i]);
dp[0]=0;
int head=0,tail=1;
int cur=0;
for(int i=1;i<=n;i++)
{
if(i-l<=0) dp[i]=0;
else
{
while(cur>=i-r&&cur<=i-l)
{
while(head<tail&&dp[cur]>dp[maxq[tail-1]]) tail--;
maxq[tail++]=cur++;
while(head<tail&&maxq[head]<i-r) head++;
dp[i]=dp[maxq[head]]+num[i];
}
}
}
//for(int i=0;i<=5;i++) printf("%d\n",dp[i]);
int ans=0;
for( int i = n ; i >= n - r + 1 ; i-- )
ans = max( ans , dp[ i ] );
printf("%d\n",ans);
return 0;
}