import java.util.*;
public class Main{
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int arr[] = new int[n];
for(int i=0;i<n;i++){
arr[i] = sc.nextInt();
}
int k = sc.nextInt();
int[] ans = slidingMax(arr,k);
for(int i=0;i<ans.length;i++) {
System.out.print(ans[i]+" ");
}
}
public static int[] slidingMax(int[] a,int k){
Deque<Integer> dq = new LinkedList<>();
int n = a.length;
int i = 0;
int[] ans = new int[n-k+1];
if(n<=1) {
return a;
}
for( ;i<k;i++) {
while(!dq.isEmpty()&&a[dq.peekLast()]<=a[i]) {
dq.removeLast();
}
dq.addLast(i);
}
for(;i<n;i++) {
ans[i-k] = a[dq.peekFirst()];
while(!dq.isEmpty()&&dq.peekFirst()<=i-k) {
dq.removeFirst();
}
while(!dq.isEmpty()&&a[dq.peekLast()]<=a[i]) {
dq.removeLast();
}
dq.addLast(i);
}
ans[i-k] = a[dq.peekFirst()];
return ans;
}
}
//I’m getting time limit in 7 0f 10 cases . Can you pls check wherecan it be