/**
*
* author: Ayon Das Gupta
*
**/
#include <bits/stdc++.h>
#define ki(x) cout << x << '\n'
#define debug(v) for(auto &i : v) { cout << i << ' '; } cout << '\n';
#define debug2(v) for(auto &[x, y] : v) { cout << x << ' ' << y << '\n'; } cout << '\n';
using namespace std;
using ll = long long;
using ld = long double;
const ll mod = 1e9 + 7;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int t;
cin >> t;
while (t--) {
int n, k;
cin >> n >> k;
vector<int> v(n);
for (int i = 0; i < n; i++) cin >> v[i];
vector<int> pref(n + 5, INT_MAX), suff(n + 5, INT_MAX);
pref[0] = v[0];
for (int i = 1; i < n; i++) {
pref[i] = min(pref[i - 1], v[i]);
}
suff[n - 1] = v[n - 1];
for (int i = n - 2; i >= 0; i--) {
suff[i] = min(suff[i + 1], v[i]);
}
map<int, int> mp;
ll sum = 0;
for (int i = 0; i < k; i++) {
sum += v[i];
mp[v[i]]++;
}
ll min1 = sum;
int p = mp.rbegin()->first;
sum -= p;
mp.erase(mp.find(p));
min1 = min(min1, sum + suff[k]);
sum += p;
int l = 0;
for (int i = k; i < n; i++) {
sum -= v[l];
sum += v[i];
min1 = min(min1, sum);
mp[v[i]]++;
int tmp = mp.rbegin()->first;
mp.erase(mp.find(tmp));
sum -= tmp;
min1 = min({min1, sum + pref[l], sum + suff[i + 1]});
sum += tmp;
l++;
}
cout << min1 << '\n';
}
return 0;
}