#include<bits/stdc++.h>
using namespace std;
long long n,m,a[1000010],ans,x,y;
struct tree{
long long l,r,minn;
}t[4000010];
long long read(){
char ch=getchar();
long long sgn=1,x=0;
while(ch<'0'||ch>'9'){
if(ch=='-'){
sgn=-1;
}
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch&15);
ch=getchar();
}
return x*sgn;
}
void write(long long n,bool p){
if(n<0){
putchar('-');
n=-n;
}
if(n==0){
if(p==true){
putchar('0');
return;
}
}
write(n/10,0);
putchar(n%10+'0');
}
void build(long long i,long long l,long long r){
t[i].l=l;
t[i].r=r;
if(l==r){
t[i].minn=a[l];
return;
}
build(i*2,l,(l+r)/2);
build(i*2+1,(l+r)/2+1,r);
t[i].minn=min(t[i*2].minn,t[i*2+1].minn);
}
void step(long long i,long long x,long long y){
if(x<=t[i].r&&y>=t[i].l){
if(x<=t[i].l&&y>=t[i].r){
t[i].minn=min(t[i*2].minn,t[i*2+1].minn);
ans=min(t[i].minn,ans);
return;
}
step(i*2,x,y);
step(i*2+1,x,y);
t[i].minn=min(t[i*2].minn,t[i*2+1].minn);
}
}
int main(){
n=read();
m=read();
for(int i=1;i<=n;i++){
a[i]=read();
}
for(int i=1;i<=n;i++){
x=i;
y=i+m-1;
ans=9999999999;
step(1,x,y);
printf("%lld\n",ans);
}
return 0;
}
输出全是9999999999