#include <bits/stdc++.h>
//_ ******************* Policy Based Data Structure ****************************
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
template <class T>
using ordered_set = tree<
T,
null_type,
less<T>,
rb_tree_tag,
tree_order_statistics_node_update
>;
//_ ****************************************************************************
#define int long long int
#define double long double
#define print(a) for(auto x : a) cout << x << " "; cout << endl
inline int power(int a, int b) {
int x = 1;
while (b) {
if (b & 1) x *= a;
a *= a;
b >>= 1;
}
return x;
}
const int M = 1000000007;
const int N = 3e5+9;
const int INF = 2e9+1;
const int LINF = 2000000000000000001;
//_ ***************************** START Below *******************************
typedef pair<int, int> pii;
vector<int> a;
//? Advanced PBDS
vector<double> consistency(int n, int k) {
vector<double> ans;
ordered_set<pair<int, int>> window;
int s = 0, e = 0;
while(e<n) {
window.insert({a[e], e});
if (e-s+1 < k) {
e++;
}
else{
if (k & 1) {
auto it = window.find_by_order(k / 2);
ans.push_back((double)it->first);
} else {
auto it1 = window.find_by_order(k / 2 - 1);
auto it2 = window.find_by_order(k / 2);
double median = (it1->first + 0.0 + it2->first) / 2.0;
ans.push_back(median);
}
window.erase({a[s], s});
s++;
e++;
}
}
return ans;
}
vector<double> practice(int n, int k) {
return {};
}
void solve() {
int n, k;
cin>>n >> k;
a.resize(n);
for(int i=0; i<n; i++) cin >> a[i];
auto ans1 = consistency(n, k);
for(auto& t : ans1 ) cout << t << " "; cout << " : ";
// auto p = practice(n, k);
// cout << " -> ";
// for(auto& it : ans1 ) {
// cout << it << " ";
// }
// cout << endl;
}
int32_t main() {
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int t = 1;
cin >> t;
while (t--) {
solve();
}
return 0;
}
CiNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgoKLy9fICoqKioqKioqKioqKioqKioqKiogUG9saWN5IEJhc2VkIERhdGEgU3RydWN0dXJlICoqKioqKioqKioqKioqKioqKioqKioqKioqKioKCiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwp1c2luZyBuYW1lc3BhY2UgX19nbnVfcGJkczsKCgp0ZW1wbGF0ZSA8Y2xhc3MgVD4KdXNpbmcgb3JkZXJlZF9zZXQgPSB0cmVlPAoJVCwKCW51bGxfdHlwZSwKCWxlc3M8VD4sCglyYl90cmVlX3RhZywKCXRyZWVfb3JkZXJfc3RhdGlzdGljc19ub2RlX3VwZGF0ZQo+OwoKLy9fICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgojZGVmaW5lIGludCAgICAgICAgICAgICAgbG9uZyBsb25nIGludAojZGVmaW5lIGRvdWJsZSAgICAgICAgICAgbG9uZyBkb3VibGUKI2RlZmluZSBwcmludChhKSAgICAgICAgIGZvcihhdXRvIHggOiBhKSBjb3V0IDw8IHggPDwgIiAiOyBjb3V0IDw8IGVuZGwKaW5saW5lIGludCBwb3dlcihpbnQgYSwgaW50IGIpIHsKICAgIGludCB4ID0gMTsKICAgIHdoaWxlIChiKSB7CiAgICAgICAgaWYgKGIgJiAxKSB4ICo9IGE7CiAgICAgICAgYSAqPSBhOwogICAgICAgIGIgPj49IDE7CiAgICB9CiAgICByZXR1cm4geDsKfQoKCmNvbnN0IGludCBNID0gMTAwMDAwMDAwNzsKY29uc3QgaW50IE4gPSAzZTUrOTsKY29uc3QgaW50IElORiA9IDJlOSsxOwpjb25zdCBpbnQgTElORiA9IDIwMDAwMDAwMDAwMDAwMDAwMDE7CgovL18gKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogU1RBUlQgQmVsb3cgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKCgoKdHlwZWRlZiBwYWlyPGludCwgaW50PiBwaWk7CgoKCgoKdmVjdG9yPGludD4gYTsKCgovLz8gQWR2YW5jZWQgUEJEUwoKdmVjdG9yPGRvdWJsZT4gY29uc2lzdGVuY3koaW50IG4sIGludCBrKSB7CiAgICB2ZWN0b3I8ZG91YmxlPiBhbnM7CiAgICAKICAgIG9yZGVyZWRfc2V0PHBhaXI8aW50LCBpbnQ+PiB3aW5kb3c7CiAgICAKICAgIGludCBzID0gMCwgZSA9IDA7CiAgICB3aGlsZShlPG4pIHsKICAgICAgICB3aW5kb3cuaW5zZXJ0KHthW2VdLCBlfSk7CiAgICAgICAgCiAgICAgICAgaWYgKGUtcysxIDwgaykgewogICAgICAgIAllKys7CiAgICAgICAgfQogICAgICAgIGVsc2V7CiAgICAgICAgCWlmIChrICYgMSkgewogICAgICAgICAgICAgICAgYXV0byBpdCA9IHdpbmRvdy5maW5kX2J5X29yZGVyKGsgLyAyKTsKICAgICAgICAgICAgICAgIGFucy5wdXNoX2JhY2soKGRvdWJsZSlpdC0+Zmlyc3QpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYXV0byBpdDEgPSB3aW5kb3cuZmluZF9ieV9vcmRlcihrIC8gMiAtIDEpOwogICAgICAgICAgICAgICAgYXV0byBpdDIgPSB3aW5kb3cuZmluZF9ieV9vcmRlcihrIC8gMik7CiAgICAgICAgICAgICAgICBkb3VibGUgbWVkaWFuID0gKGl0MS0+Zmlyc3QgKyAwLjAgKyBpdDItPmZpcnN0KSAvIDIuMDsKICAgICAgICAgICAgICAgIGFucy5wdXNoX2JhY2sobWVkaWFuKTsKICAgICAgICAgICAgfQogICAgICAgICAgICB3aW5kb3cuZXJhc2Uoe2Fbc10sIHN9KTsKICAgICAgICAJcysrOwogICAgICAgIAllKys7CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gYW5zOwp9CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKdmVjdG9yPGRvdWJsZT4gcHJhY3RpY2UoaW50IG4sIGludCBrKSB7CgoJcmV0dXJuIHt9OwoJCn0KCgoKCnZvaWQgc29sdmUoKSB7CiAgICAKICAgIGludCBuLCBrOwogICAgY2luPj5uID4+IGs7CgkKCWEucmVzaXplKG4pOwogICAgZm9yKGludCBpPTA7IGk8bjsgaSsrKSBjaW4gPj4gYVtpXTsKICAgIAogICAgYXV0byBhbnMxID0gY29uc2lzdGVuY3kobiwgayk7CiAgICBmb3IoYXV0byYgdCA6IGFuczEgKQljb3V0IDw8IHQgPDwgIiAiOwljb3V0IDw8ICIgICA6ICAgIjsKICAgIAoKICAgIAogICAgCiAgICAvLyBhdXRvIHAgPSBwcmFjdGljZShuLCBrKTsKICAgIC8vIGNvdXQgPDwgIiAtPiAiOwogICAgLy8gZm9yKGF1dG8mIGl0IDogYW5zMSApIHsKICAgIC8vIAljb3V0IDw8IGl0IDw8ICIgIjsKICAgIC8vIH0KICAgIC8vIGNvdXQgPDwgZW5kbDsKICAgIAoKCn0KCgoKCgppbnQzMl90IG1haW4oKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyBjb3V0LnRpZSgwKTsKCiAgICBpbnQgdCA9IDE7CiAgICBjaW4gPj4gdDsKICAgIHdoaWxlICh0LS0pIHsKICAgICAgICBzb2x2ZSgpOwogICAgfQoKICAgIHJldHVybiAwOwp9