http://acm.hdu.edu.cn/showproblem.php?pid=2182
// 1281694 2009-04-17 22:05:25 Accepted 2182 0MS 304K 718 B C++ no way 
#include < iostream >
#include
< map >
using   namespace  std;
int  main()
{
    
int t;
    cin
>>t;
    
while(t--)
    
{
        
int n,a,b,k;
        
int dp[101][101],num[101];
        
int i,j,p,M,maxs;
        scanf(
"%d%d%d%d",&n,&a,&b,&k);
        
for(i=1;i<=n;i++)
            scanf(
"%d",&num[i]);

        
for(i=1;i<=n;i++//跳0步肯定是0
            dp[i][0= 0;

        M 
= dp[1][0= num[1];//第1个位置的0步状态是有虫的

        
for(j=1;j<=k;j++)//跳跃的步数
        {
            
for(i=2;i<=n;i++)//青蛙所在的位置
            {
                maxs 
= -1;
                
for(p=1;p<i;p++//跟其前面的位置有关
                {
                    
if(p+a<= i && p+>=&& maxs < dp[p][j-1])
                        maxs 
= dp[p][j-1];                    
                }

                
if(maxs == -1)//第j次跳不能跳到j这个位置
                    dp[i][j] = 0;
                
else
                    dp[i][j] 
= maxs + num[i];
                
if(M < dp[i][j])
                    M 
= dp[i][j];
            }

        }
    
        cout
<<M<<endl;
    }

    
return 0;
}