//SUST_ZadeedBoss_Fanclub
//code_korlei_life_ase
//na_korle_lifeNai
#include<bits/stdc++.h>
using namespace std;
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
// template <typename T> using o_set = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
#define int long long
// #define double long double
// #define all(x) x.begin(), x.end()
// #define rall(x) x.rbegin(), x.rend()
// mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
void solve ()
{
int n, k; cin >>n >>k;
vector <int> v(n);
for (auto &it : v) cin >>it;
multiset <int> baire, vitore;
int sum = 0;
for (int i=0; i<k; i++) {vitore.insert(v[i]); sum += v[i];}
for (int i=k; i<n; i++) baire.insert(v[i]);
if (n == k)
{
cout <<sum <<"\n";
return;
}
int ans = min(sum, sum - *vitore.rbegin() + *baire.begin());
for (int i=k; i<n; i++)
{
int j = i-k;
sum -= v[j]; sum += v[i];
vitore.erase(vitore.find(v[j]));
baire.insert(v[j]);
baire.erase(baire.find(v[i]));
vitore.insert(v[i]);
ans = min(ans, min(sum, sum - *vitore.rbegin() + *baire.begin()));
}
cout <<ans <<"\n";
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(NULL);
int TCASE = 1;
cin >> TCASE;
for (int tcase = 1; tcase <= TCASE; tcase++)
{
// cout <<"Case #" <<tcase <<": ";
solve();
}
}