#include<bits/stdc++.h>
#define ll long long int
#define vec vector<ll>
#define f(var,a,b) for(ll var = a ; var < b ; var++ )
#define fasthoja ios_base::sync_with_stdio(false); cin.tie(NULL);
using namespace std;
//This funtion will find the maximum sum of âkâ
//consecutive elements in the array.
ll slidingWindow( vec &v , ll k ) {
// Note : here we maintain, sliding window of size k
/* Algo : 1. Calculate sum from 0 to kth element
2. Now at each step take add the next (k+1)th value, and subtract the k-1th value
3. at each step store maximum sum, and finally return it
*/
if( k > v.size() ) {
// Here window size is greater than array size hence invalid
// cout << "Invalid\n";
return -1;
}
ll sum = 0;
f(i,0,k) sum += v[i];
ll maxSum = sum;
ll index = 1;
f(i,k,v.size()) {
sum += ( v[i] - v[i-k] );
maxSum = max( maxSum , sum );
}
return maxSum;
}
int main(void){
fasthoja;
ll t; cin>>t;
while(t--){
ll n,k; cin >> n >> k;
vec v(n); f(i,0,n) cin >> v[i];
cout << slidingWindow( v , k ) << "\n";
}//end of test case loop
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBsbCBsb25nIGxvbmcgaW50CiNkZWZpbmUgdmVjIHZlY3RvcjxsbD4KI2RlZmluZSBmKHZhcixhLGIpIGZvcihsbCB2YXIgPSBhIDsgdmFyIDwgYiA7IHZhcisrICkKI2RlZmluZSBmYXN0aG9qYSBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsgY2luLnRpZShOVUxMKTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vVGhpcyBmdW50aW9uIHdpbGwgZmluZCB0aGUgbWF4aW11bSBzdW0gb2Yg4oCYa+KAmSAKLy9jb25zZWN1dGl2ZSBlbGVtZW50cyBpbiB0aGUgYXJyYXkuCmxsIHNsaWRpbmdXaW5kb3coIHZlYyAmdiAsIGxsIGsgKSB7Ci8vIE5vdGUgOiBoZXJlIHdlIG1haW50YWluLCBzbGlkaW5nIHdpbmRvdyBvZiBzaXplIGsKCi8qCUFsZ28gOiAxLiBDYWxjdWxhdGUgc3VtIGZyb20gMCB0byBrdGggZWxlbWVudAoJCSAgIDIuIE5vdyBhdCBlYWNoIHN0ZXAgdGFrZSBhZGQgdGhlIG5leHQgKGsrMSl0aCB2YWx1ZSwgYW5kIHN1YnRyYWN0IHRoZSBrLTF0aCB2YWx1ZQoJCSAgIDMuIGF0IGVhY2ggc3RlcCBzdG9yZSBtYXhpbXVtIHN1bSwgYW5kIGZpbmFsbHkgcmV0dXJuIGl0CiovCglpZiggayA+IHYuc2l6ZSgpICkgewovLwkJSGVyZSB3aW5kb3cgc2l6ZSBpcyBncmVhdGVyIHRoYW4gYXJyYXkgc2l6ZSBoZW5jZSBpbnZhbGlkCi8vCQljb3V0IDw8ICJJbnZhbGlkXG4iOwoJCXJldHVybiAtMTsKCX0KCQoJbGwgc3VtID0gMDsKCWYoaSwwLGspIHN1bSArPSB2W2ldOwoJCglsbCBtYXhTdW0gPSBzdW07CglsbCBpbmRleCA9IDE7CgkKCWYoaSxrLHYuc2l6ZSgpKSB7CgkJc3VtICs9ICggdltpXSAtIHZbaS1rXSApOwoJCW1heFN1bSA9IG1heCggbWF4U3VtICwgc3VtICk7Cgl9CgkKCXJldHVybiBtYXhTdW07Cn0KCmludCBtYWluKHZvaWQpewoJCiAgICBmYXN0aG9qYTsKICAgIGxsIHQ7IGNpbj4+dDsKCiAgICB3aGlsZSh0LS0pewogICAgCWxsIG4sazsgY2luID4+IG4gPj4gazsKICAgIAl2ZWMgdihuKTsgZihpLDAsbikgY2luID4+IHZbaV07CiAgICAJY291dCA8PCBzbGlkaW5nV2luZG93KCB2ICwgayApIDw8ICJcbiI7CiAgICB9Ly9lbmQgb2YgdGVzdCBjYXNlIGxvb3AKCiByZXR1cm4gMDsKfQo=