#include<iostream>
using namespace std;
const int N = 1000010;
int a[N],q[N];
int main()
{
int n,k;
cin >> n >> k;
for(int i = 0; i< n;i ++) cin >> a[i];
int hh = 0,tt = -1;
for(int i = 0 ;i < n;i ++)
{
//保证内部元素不大于三个.
while(hh <= tt && i - k + 1 > q[hh]) hh ++;
//维护队列中单调递增.
while(hh <= tt && a[q[tt]] >= a[i]) tt--;
q[++ tt] = i;
//当下标扫描到了第三个元素的时候就可以开始打印了.
if(i >= k - 1)cout << a[q[hh]] << ' ';
}
puts("");
}