import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
int n = in.nextInt();
int k = in.nextInt();
int[] a = new int[n];
TreeMap<Integer, Integer> tmap = new TreeMap<>((o1, o2)-> {return o2 - o1;});
for (int i = 0; i < n; i++) {
a[i] = in.nextInt();
}
ArrayList<Integer> res = new ArrayList<>();//结果集
//初始化pq
for (int i = 0; i < k; i++) {
tmap.put(a[i], tmap.getOrDefault(a[i], 0) + 1);
}
//滑动n-k次
for (int l = 0; l < n - k; l++) {
//把当前的最大加进结果集
Iterator itr = tmap.keySet().iterator();
res.add((int)itr.next());
//滑动
//去掉左边l
tmap.put(a[l], tmap.get(a[l]) - 1);
if (tmap.get(a[l]) == 0) tmap.remove(a[l]);
//加上右边l+k
tmap.put(a[l + k], tmap.getOrDefault(a[l + k], 0) + 1);
}
//把最后一次移动窗口的最大值补上
Iterator itr = tmap.keySet().iterator();
res.add((int)itr.next());
//输出
for (int i = 0; i < res.size(); i++) {
if (i != 0) System.out.print(" ");
System.out.print(res.get(i));
}
}
}