const int N=2e6+5;
int n,m,t;
int i,j,k;
int a[N];
int q[N];
int id[N];
void get_max()//单调递减序列
{
int head=1,tail=0;
for(i=1;i<k;i++){
while(tail>=head && q[tail]<=a[i]) tail--;
tail++;
q[tail]=a[i];
id[tail]=i;
}
for(i=k;i<=n;i++){
while(tail>=head && q[tail]<=a[i]) tail--;
tail++;
q[tail]=a[i];
id[tail]=i;
while(i-id[head]+1>k) head++;
pd(q[head]);
}
}
int main()
{
//IOS;
while(sdd(n,k)==2){
for(i=1;i<=n;i++) sd(a[i]);
get_max();
}
//PAUSE;
}