#include <bits/stdc++.h>
#define FI(i,a,b) for(int i=(a);i<=(b);i++)
#define FD(i,a,b) for(int i=(a);i>=(b);i--)
#define LL long long
using namespace std;
#define N 10105
#define INF (1<<30)
int t,n,m,w;
int s[N],ps[N];
int dp[2][N],dp2[2][N];
int q[N],l,r;
void solve(){
scanf("%d %d %d",&n,&m,&w);
FI(i,1,n) scanf("%d",&s[i]);
FI(i,n+1,n+w) s[i]=0;
n+=w; //account for those on the right boundary
FI(i,1,n) ps[i]=ps[i-1]+s[i];
//dp, rolling array
memset(dp,0,sizeof(dp));
memset(dp2,0,sizeof(dp2));
FI(i,1,n) dp[0][i]=-INF;
while(m--){
l=0;
r=1;
q[0]=0;
FI(i,1,n){
int lt=max(i-w,0);
//case 1: no overlap with previous hits
dp[1][i]=dp2[0][lt]+ps[i]-ps[lt];
while(l<r && i-q[l]>=w) l++; //pop front
//case 2: overlap with previous hits
if(l<r) dp[1][i]=max(dp[1][i],dp[0][q[l]]+ps[i]-ps[q[l]]);
while(l<r && (dp[0][i]-ps[i]) > (dp[0][q[r-1]]-ps[q[r-1]])) r--; //pop back
q[r++]=i; //add current
dp2[1][i]=max(dp2[1][i-1],dp[1][i]); //update dp2
}
FI(i,1,n) dp[0][i]=dp[1][i],dp2[0][i]=dp2[1][i]; //rolling array
}
printf("%d\n",dp2[0][n]);
return;
}
int main(){
scanf("%d",&t);
while(t--) solve();
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CgojZGVmaW5lIEZJKGksYSxiKSBmb3IoaW50IGk9KGEpO2k8PShiKTtpKyspCiNkZWZpbmUgRkQoaSxhLGIpIGZvcihpbnQgaT0oYSk7aT49KGIpO2ktLSkKCiNkZWZpbmUgTEwgbG9uZyBsb25nCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBOIDEwMTA1CiNkZWZpbmUgSU5GICgxPDwzMCkKCmludCB0LG4sbSx3OwoKaW50IHNbTl0scHNbTl07CmludCBkcFsyXVtOXSxkcDJbMl1bTl07CgppbnQgcVtOXSxsLHI7Cgp2b2lkIHNvbHZlKCl7CglzY2FuZigiJWQgJWQgJWQiLCZuLCZtLCZ3KTsKCUZJKGksMSxuKSBzY2FuZigiJWQiLCZzW2ldKTsKCUZJKGksbisxLG4rdykgc1tpXT0wOwoJbis9dzsgLy9hY2NvdW50IGZvciB0aG9zZSBvbiB0aGUgcmlnaHQgYm91bmRhcnkKCUZJKGksMSxuKSBwc1tpXT1wc1tpLTFdK3NbaV07CgkKCS8vZHAsIHJvbGxpbmcgYXJyYXkKCW1lbXNldChkcCwwLHNpemVvZihkcCkpOwoJbWVtc2V0KGRwMiwwLHNpemVvZihkcDIpKTsKCUZJKGksMSxuKSBkcFswXVtpXT0tSU5GOwoJd2hpbGUobS0tKXsKCQlsPTA7CgkJcj0xOwoJCXFbMF09MDsKCQlGSShpLDEsbil7CgkJCWludCBsdD1tYXgoaS13LDApOwoJCQkvL2Nhc2UgMTogbm8gb3ZlcmxhcCB3aXRoIHByZXZpb3VzIGhpdHMKCQkJZHBbMV1baV09ZHAyWzBdW2x0XStwc1tpXS1wc1tsdF07CgkKCQkJd2hpbGUobDxyICYmIGktcVtsXT49dykgbCsrOyAvL3BvcCBmcm9udAoJCQkKCQkJLy9jYXNlIDI6IG92ZXJsYXAgd2l0aCBwcmV2aW91cyBoaXRzCgkJCWlmKGw8cikgZHBbMV1baV09bWF4KGRwWzFdW2ldLGRwWzBdW3FbbF1dK3BzW2ldLXBzW3FbbF1dKTsKCQkJCgkJCXdoaWxlKGw8ciAmJiAoZHBbMF1baV0tcHNbaV0pID4gKGRwWzBdW3Fbci0xXV0tcHNbcVtyLTFdXSkpIHItLTsgLy9wb3AgYmFjawoJCQlxW3IrK109aTsgLy9hZGQgY3VycmVudAoJCQkKCQkJZHAyWzFdW2ldPW1heChkcDJbMV1baS0xXSxkcFsxXVtpXSk7IC8vdXBkYXRlIGRwMgoJCX0KCQlGSShpLDEsbikgZHBbMF1baV09ZHBbMV1baV0sZHAyWzBdW2ldPWRwMlsxXVtpXTsgLy9yb2xsaW5nIGFycmF5Cgl9CglwcmludGYoIiVkXG4iLGRwMlswXVtuXSk7CglyZXR1cm47Cn0KCmludCBtYWluKCl7CglzY2FuZigiJWQiLCZ0KTsKCXdoaWxlKHQtLSkgc29sdmUoKTsKCXJldHVybiAwOwp9Cg==