#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
const int INF = 1e9;
const ll LINF = 1e18;
const int N = 17e3 + 5;
int n, k;
int a[N];
void solve() {
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i];
// Đây còn gọi là minimum queue
// Nhìn chung ý tưởng tương tự như bên stack, nhưng cần thao tác ở cả 2 đầu nên phải đổi sang deque
// Khi xét đến i, gọi j là phần tử ở cuối deque (dq.back())
// Nếu a[j] > a[i] thì việc giữ j lại không có ý nghĩa gì cả
// Vì i nằm sâu bên trong hơn j đồng thời a[i] cũng "tốt" hơn a[j]
// nên trường hợp này ta pop_back() j ra khỏi deque
// Lặp lại đến khi deque rỗng hoặc a[j] <= a[i]
// => Deque sẽ luôn được sắp xếp tăng dần tại mọi thời điểm
// => Phần tử nhỏ nhất sẽ nằm ở đầu deque (dq.front())
// Nhưng trước khi in ra ta cần loại bỏ (pop_front()) phần tử nằm bên ngoài đoạn truy vấn [i - k + 1, i]
deque<int> dq;
for (int i = 1; i <= n; i++) {
while (!dq.empty() && a[dq.back()] > a[i]) dq.pop_back();
dq.push_back(i);
if (dq.front() == i - k) dq.pop_front();
if (i >= k) cout << a[dq.front()] << ' ';
}
cout << '\n';
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
solve();
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsgIAoKdHlwZWRlZiBsb25nIGxvbmcgbGw7ICAKdHlwZWRlZiBwYWlyPGludCwgaW50PiBpaTsgIAoKY29uc3QgaW50IElORiA9IDFlOTsgIApjb25zdCBsbCBMSU5GID0gMWUxODsgIAoKY29uc3QgaW50IE4gPSAxN2UzICsgNTsgCgppbnQgbiwgazsgIAppbnQgYVtOXTsgCgp2b2lkIHNvbHZlKCkgewoJY2luID4+IG4gPj4gazsgIAoJZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSBjaW4gPj4gYVtpXTsgIAoKCS8vIMSQw6J5IGPDsm4gZ+G7jWkgbMOgIG1pbmltdW0gcXVldWUKCS8vIE5ow6xuIGNodW5nIMO9IHTGsOG7n25nIHTGsMahbmcgdOG7sSBuaMawIGLDqm4gc3RhY2ssIG5oxrBuZyBj4bqnbiB0aGFvIHTDoWMg4bufIGPhuqMgMiDEkeG6p3UgbsOqbiBwaOG6o2kgxJHhu5VpIHNhbmcgZGVxdWUKCS8vIEtoaSB4w6l0IMSR4bq/biBpLCBn4buNaSBqIGzDoCBwaOG6p24gdOG7rSDhu58gY3Xhu5FpIGRlcXVlIChkcS5iYWNrKCkpCgkvLyBO4bq/dSBhW2pdID4gYVtpXSB0aMOsIHZp4buHYyBnaeG7ryBqIGzhuqFpIGtow7RuZyBjw7Mgw70gbmdoxKlhIGfDrCBj4bqjCgkvLyBWw6wgaSBu4bqxbSBzw6J1IGLDqm4gdHJvbmcgaMahbiBqIMSR4buTbmcgdGjhu51pIGFbaV0gY8WpbmcgInThu5F0IiBoxqFuIGFbal0KCS8vIG7Dqm4gdHLGsOG7nW5nIGjhu6NwIG7DoHkgdGEgcG9wX2JhY2soKSBqIHJhIGto4buPaSBkZXF1ZQoJLy8gTOG6t3AgbOG6oWkgxJHhur9uIGtoaSBkZXF1ZSBy4buXbmcgaG/hurdjIGFbal0gPD0gYVtpXQoJLy8gPT4gRGVxdWUgc+G6vSBsdcO0biDEkcaw4bujYyBz4bqvcCB44bq/cCB0xINuZyBk4bqnbiB04bqhaSBt4buNaSB0aOG7nWkgxJFp4buDbQoJLy8gPT4gUGjhuqduIHThu60gbmjhu48gbmjhuqV0IHPhur0gbuG6sW0g4bufIMSR4bqndSBkZXF1ZSAoZHEuZnJvbnQoKSkKCS8vIE5oxrBuZyB0csaw4bubYyBraGkgaW4gcmEgdGEgY+G6p24gbG/huqFpIGLhu48gKHBvcF9mcm9udCgpKSBwaOG6p24gdOG7rSBu4bqxbSBiw6puIG5nb8OgaSDEkW/huqFuIHRydXkgduG6pW4gW2kgLSBrICsgMSwgaV0KCWRlcXVlPGludD4gZHE7ICAKCWZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykgewoJCXdoaWxlICghZHEuZW1wdHkoKSAmJiBhW2RxLmJhY2soKV0gPiBhW2ldKSBkcS5wb3BfYmFjaygpOyAKCQlkcS5wdXNoX2JhY2soaSk7ICAgCgkJaWYgKGRxLmZyb250KCkgPT0gaSAtIGspIGRxLnBvcF9mcm9udCgpOyAgIAoJCWlmIChpID49IGspIGNvdXQgPDwgYVtkcS5mcm9udCgpXSA8PCAnICc7IAoJfQoJY291dCA8PCAnXG4nOyAKfSAKCmludCBtYWluKCkgewoJaW9zOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyAKCWNpbi50aWUobnVsbHB0cik7IAkKCWludCB0OyAKCWNpbiA+PiB0OyAgCgoJd2hpbGUgKHQtLSkgewoJCXNvbHZlKCk7IAoJfQp9CQ==