#include <iostream>
#include <cstdio>
#include <cmath>
#include <string.h>
using namespace std;
const int N = 1000005;
const int inf = 0x7f;
int p[N];
int n, m;
int LOG2[N];
int dp_min[N][25];
void init(){
LOG2[0] = -1;
for (int i = 1; i <= N; i++){
LOG2[i] = LOG2[i >> 1] + 1;
}
for (int k = 1; k <= N; k++){
dp_min[k][0] = p[k];
}
int MAX_index = log2(n);
for (int i = 1; i <= MAX_index; i++){
for (int j = 1; j + (1 << i) <= n + 1; j++){
dp_min[j][i] = min(dp_min[j][i - 1], dp_min[j + (1 << (i - 1))][i - 1]);
}
}
}
int getans(int L,int R){
int len = R - L + 1;
int k = LOG2[len];
int ans;
ans = min(dp_min[L][k], dp_min[R - (1 << k) + 1][k]);
return ans;
}
int main(){
scanf("%d%d", &n, &m);
memset(dp_min, inf, sizeof(dp_min));
for (int i = 1; i <= n; i++){
scanf("%d", &p[i]);
}
init();
for (int i = 1; i <= n - m + 1; i++)
printf("%d\n", getans(i, i + m - 1));
return 0;
}