#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
using namespace std;
void solve() {
int T;
cin >> T;
while (T--) {
int N, K;
cin >> N >> K;
vector<int> A(N);
for (int i = 0; i < N; ++i) {
cin >> A[i];
}
// Sliding window to calculate the minimum sum of any subarray of length K
long long currentSum = 0, minSum = LLONG_MAX;
for (int i = 0; i < K; ++i) {
currentSum += A[i];
}
minSum = currentSum;
for (int i = K; i < N; ++i) {
currentSum += A[i] - A[i - K];
minSum = min(minSum, currentSum);
}
// Single swap optimization
int minValue = *min_element(A.begin(), A.end());
int maxValue = *max_element(A.begin(), A.end());
for (int i = 0; i <= N - K; ++i) {
long long subarraySum = 0;
for (int j = 0; j < K; ++j) {
subarraySum += A[i + j];
}
// Swap largest outside with smallest inside
for (int j = 0; j < K; ++j) {
long long newSum = subarraySum - A[i + j] + maxValue;
minSum = min(minSum, newSum);
}
// Swap smallest outside with largest inside
for (int j = 0; j < K; ++j) {
long long newSum = subarraySum - A[i + j] + minValue;
minSum = min(minSum, newSum);
}
}
cout << minSum << '\n';
}
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}