#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 = 2e5 + 5;
int n, k;
int a[N];
int pref[N];
// Giả sử ta cần kiểm tra một giá trị med (median) nào đấy
// Ta có mảng b với b[i] = 1, nếu a[i] >= med
// b[i] = -1, nếu a[i] < med
// Một đoạn [l, r] thoả mãn nếu số lượng (a[i] >= med) lớn hơn số lượng (a[i] < med)
// => Tổng đoạn b[l..r] > 0
// => Check max_sum(b) > 0
// Và với giá trị med càng lớn thì số số 1 càng giảm, số số -1 càng tăng
// giá trị med càng nhỏ thì số số 1 càng tăng, số số -1 càng giảm
// => Tìm kiếm nhị phân đáp án số median
bool check(int med) {
// r - l >= k
// l <= r - k
for (int i = 1; i <= n; i++) pref[i] = pref[i - 1] + (a[i] >= med ? 1 : -1);
int mx_sum = 0, mn_pref = INF;
for (int r = 1, l = -1; r <= n; r++) {
while (l + 1 <= r - k) {
l++;
mn_pref = min(mn_pref, pref[l]);
}
mx_sum = max(mx_sum, pref[r] - mn_pref);
}
return (mx_sum > 0);
}
int main() {
ios::sync_with_stdio(0); cin.tie(0);
cin >> n >> k;
for (int i = 1; i <= n; i++) cin >> a[i];
int l = 1, r = n, ans = -1;
while (l <= r) {
int mid = (l + r) >> 1;
if (check(mid)) {
ans = mid;
l = mid + 1;
}
else {
r = mid - 1;
}
}
cout << ans << '\n';
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAgCgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsgIAp0eXBlZGVmIHBhaXI8aW50LCBpbnQ+IGlpOyAgCgpjb25zdCBpbnQgSU5GID0gMWU5OyAgCmNvbnN0IGxsIExJTkYgPSAxZTE4OyAgCgpjb25zdCBpbnQgTiA9IDJlNSArIDU7ICAKCmludCBuLCBrOyAgCmludCBhW05dOyAKaW50IHByZWZbTl07ICAKCi8vIEdp4bqjIHPhu60gdGEgY+G6p24ga2nhu4NtIHRyYSBt4buZdCBnacOhIHRy4buLIG1lZCAobWVkaWFuKSBuw6BvIMSR4bqleQovLyBUYSBjw7MgbeG6o25nIGIgduG7m2kgYltpXSA9IDEsIG7hur91IGFbaV0gPj0gbWVkCi8vICAgICAgICAgICAgICAgICAgYltpXSA9IC0xLCBu4bq/dSBhW2ldIDwgbWVkCgovLyBN4buZdCDEkW/huqFuIFtsLCByXSB0aG/huqMgbcOjbiBu4bq/dSBz4buRIGzGsOG7o25nIChhW2ldID49IG1lZCkgbOG7m24gaMahbiBz4buRIGzGsOG7o25nIChhW2ldIDwgbWVkKQovLyA9PiBU4buVbmcgxJFv4bqhbiBiW2wuLnJdID4gMCAKLy8gPT4gQ2hlY2sgbWF4X3N1bShiKSA+IDAKCi8vIFbDoCB24bubaSBnacOhIHRy4buLIG1lZCBjw6BuZyBs4bubbiB0aMOsIHPhu5Egc+G7kSAxIGPDoG5nIGdp4bqjbSwgc+G7kSBz4buRIC0xIGPDoG5nIHTEg25nCi8vICAgICAgICBnacOhIHRy4buLIG1lZCBjw6BuZyBuaOG7jyB0aMOsIHPhu5Egc+G7kSAxIGPDoG5nIHTEg25nLCBz4buRIHPhu5EgLTEgY8OgbmcgZ2nhuqNtCi8vID0+IFTDrG0ga2nhur9tIG5o4buLIHBow6JuIMSRw6FwIMOhbiBz4buRIG1lZGlhbiAKCmJvb2wgY2hlY2soaW50IG1lZCkgewoJLy8gciAtIGwgPj0gayAKCS8vIGwgPD0gciAtIGsgICAKCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHByZWZbaV0gPSBwcmVmW2kgLSAxXSArIChhW2ldID49IG1lZCA/IDEgOiAtMSk7ICAKCglpbnQgbXhfc3VtID0gMCwgbW5fcHJlZiA9IElORjsgCglmb3IgKGludCByID0gMSwgbCA9IC0xOyByIDw9IG47IHIrKykgewoJCXdoaWxlIChsICsgMSA8PSByIC0gaykgewoJCQlsKys7IAoJCQltbl9wcmVmID0gbWluKG1uX3ByZWYsIHByZWZbbF0pOyAgIAoJCX0KCQlteF9zdW0gPSBtYXgobXhfc3VtLCBwcmVmW3JdIC0gbW5fcHJlZik7IAoJfQoKCXJldHVybiAobXhfc3VtID4gMCk7IAp9CgppbnQgbWFpbigpIHsKCWlvczo6c3luY193aXRoX3N0ZGlvKDApOyBjaW4udGllKDApOyAgCQoJY2luID4+IG4gPj4gazsgCglmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIGNpbiA+PiBhW2ldOyAKCglpbnQgbCA9IDEsIHIgPSBuLCBhbnMgPSAtMTsgIAoJCgl3aGlsZSAobCA8PSByKSB7CgkJaW50IG1pZCA9IChsICsgcikgPj4gMTsgCgoJCWlmIChjaGVjayhtaWQpKSB7CgkJCWFucyA9IG1pZDsgIAoJCQlsID0gbWlkICsgMTsgIAoJCX0KCQllbHNlIHsKCQkJciA9IG1pZCAtIDE7IAoJCX0KCX0KCgljb3V0IDw8IGFucyA8PCAnXG4nOyAKfQ==