#include<bits/stdc++.h>
using namespace std;
struct node{
int zhi;
int number;
};
deque<node> qx;
int small[2000005];
node q;
int main(){
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
int x;
scanf("%d",&x);
q.zhi=x;
q.number=i;
while(!qx.empty()&&x<=qx.back().zhi){
qx.pop_back();
}
qx.push_back(q);
if(qx.front().number+k<=i){
qx.pop_front();
}
if(i>=k){
small[i-k+2]=qx.front().zhi;
}
}
for(int i=1;i<=n-k+1;i++){
cout<<small[i]<<endl;
}
return 0;
}