#include <iostream>
#include<bits/stdc++.h>
using namespace std;
void kcanketenate(int *b,int n,int k,int *a){
int j =0;
while(k) {
for(int i=0;i<n;i++){
b[j] = a[i];
j++;
}
k--;
}
}
long long maxFind( int *b,int n) {
long long maxsofar = INT_MIN;
long long currensum = 0;
for(int i =0;i<n;i++){
currensum = currensum +b[i];
maxsofar = max(maxsofar,currensum);
if(currensum < 0) {
currensum = 0;
}
}
return maxsofar;
}
int main() {
// your code goes here
int t;
cin>>t;
while(t--){
int n,k;
cin>>n>>k;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int b [n*2];
kcanketenate(b,n,2,a);
int sum = 0;
for(int i=0;i<n;i++){
sum += a[i];
}
long long kmax = maxFind(b,2*n);
if (k ==1 ) {
cout<<kmax<<endl;
} else {
if(sum < 0){
cout<<kmax<<endl;
} else {
cout<<kmax + (k-2) * sum<<endl;
}
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCnZvaWQga2NhbmtldGVuYXRlKGludCAqYixpbnQgbixpbnQgayxpbnQgKmEpewoJCglpbnQgaiA9MDsKCXdoaWxlKGspIHsKCQlmb3IoaW50IGk9MDtpPG47aSsrKXsKCQkJYltqXSA9IGFbaV07CgkJCWorKzsKCQl9CgkJay0tOwoJfQp9Cgpsb25nIGxvbmcgbWF4RmluZCggaW50ICpiLGludCBuKSB7CgkKCWxvbmcgbG9uZyBtYXhzb2ZhciA9IElOVF9NSU47Cglsb25nIGxvbmcgIGN1cnJlbnN1bSA9IDA7CgkKCWZvcihpbnQgaSA9MDtpPG47aSsrKXsKCQljdXJyZW5zdW0gPSBjdXJyZW5zdW0gK2JbaV07CgkJCgkJbWF4c29mYXIgPSBtYXgobWF4c29mYXIsY3VycmVuc3VtKTsKCQlpZihjdXJyZW5zdW0gPCAwKSB7CgkJCWN1cnJlbnN1bSA9IDA7CgkJfQoJfQoJCglyZXR1cm4gbWF4c29mYXI7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJaW50IHQ7CgljaW4+PnQ7Cgl3aGlsZSh0LS0pewoJCWludCBuLGs7CgkJY2luPj5uPj5rOwoJCQoJCWludCBhW25dOwoJCWZvcihpbnQgaT0wO2k8bjtpKyspewoJCQljaW4+PmFbaV07CgkJfQoJCQoJCWludCBiIFtuKjJdOwoJCWtjYW5rZXRlbmF0ZShiLG4sMixhKTsKCQkKCQkKCQlpbnQgc3VtICA9IDA7CgkJZm9yKGludCBpPTA7aTxuO2krKyl7CgkJCXN1bSArPSBhW2ldOwoJCX0KCQkKCQlsb25nIGxvbmcga21heCA9IG1heEZpbmQoYiwyKm4pOwoJCWlmIChrID09MSApIHsKCQkJY291dDw8a21heDw8ZW5kbDsKCQl9IGVsc2UgewoJCQlpZihzdW0gPCAwKXsKCQkJY291dDw8a21heDw8ZW5kbDsKCQl9IGVsc2UgewoJCQljb3V0PDxrbWF4ICsgKGstMikgKiBzdW08PGVuZGw7CgkJIH0KCQl9Cgl9CglyZXR1cm4gMDsKfQ==