#include<bits/stdc++.h>
using namespace std;
int read(){
int x=0;
int f=1;
char c=getchar();
while(c>'9'&&c<'0'){
if(c=='-')f=-1;
c=getchar();
}
while(c>='0'&&c<='9'){
x=(x<<1)+(x<<3)+(c^'0');
c=getchar();
}
return x*f;
}
int n,m;
int tree[1000001<<2];
void pushup(int &t0,const int &t1,const int &t2){
t0=min(t1,t2);
}
void build(int x,int l,int r){
if(l==r){
tree[x]=read();
}else{
int mid=(l+r)>>1;
build(x<<1,l,mid);
build(x<<1|1,mid+1,r);
pushup(tree[x],tree[x<<1],tree[x<<1|1]);
}
}
int query(int x,int l,int r,int L,int R){
if(L<=l&&r<=R){
return tree[x];
}else{
int mid=(l+r)>>1;
int res=0x7fffffff;
if(L<=mid){
pushup(res,res,query(x<<1,l,mid,L,R));
}
if(R>mid){
pushup(res,res,query(x<<1|1,mid+1,r,L,R));
}
return res;
}
}
int main(){
n=read();
m=read();
build(1,1,n);
for(int i=1;i<=n-m+1;i++){
printf("%d\n",query(1,1,n,i,i+m-1));
}
return 0;
}