// /**
// *
// * 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 ans = sum;
// for (int i = k; i < n; i++) {
// sum -= v[i - k];
// sum += v[i];
// ans = max(ans, sum);
// mp[v[i - k]]--;
// if (mp[v[i - k]] == 0) mp.erase(v[i - k]);
// }
// }
// return 0;
// }
/**
*
* 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;
if (mp[p] == 0) mp.erase(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;
if (mp[tmp] == 0) mp.erase(tmp);
sum -= tmp;
int sufff = INT_MAX;
if (i + 1 < n) sufff = suff[i + 1];
min1 = min({min1, sum + pref[l], sum + sufff});
sum += tmp;
l++;
}
cout << min1 << '\n';
}
return 0;
}