#include <iostream>
#include <cstring>
#include<algorithm>
using namespace std;
const int INF = 1 <<30;
int main()
{
int T,N,A,B,K,path[100],dp[100][100];
cin >> T;
while(T--){
cin >> N >> A >> B >> K;
for(int i = 0; i < N; i++){
cin >> path[i];
}
for(int i = 0 ; i <100; i++){
for(int j =0; j < 100; j++)
dp[i][j] = -INF;
}
for(int i =0; i <= K; i++)
dp[i][0] = path[0];
for(int i = 0; i< K; i++){
for(int j = 0; j <= N - 1; j++){
dp[i+1][j] = max(dp[i + 1][j],dp[i][j]);
for(int m = A; m <= B; m++){
if(j + m <= N -1){
dp[i+1][m + j] = max(dp[i +1][m+j],dp[i][j] + path[m + j]);
}
}
}
}
cout << *max_element(dp[K],dp[K] + N) << endl;
}
return 0;
}