#include<stdio.h>
#include<stdlib.h>
void solve()
{
    int n,k,i;
    if(scanf("%d",&n)!=1)return;
    int*nums=(int*)malloc(n*sizeof(int));
    if(i=0;i<n;i++)
    {
        if(scanf("%d",&sums[i])!=1)
        {
            free(nums);
            return;
        }
    }
    if(scanf("%d",&k)!=1)
    {
        free(nums);
        return;
    }
}
if(n<=0||k<=0||k>n)
{
    printf("Invalid input");
    free(nums);
    return;
}
int*dq=(int*)malloc(n*sizeof(int));
int front=0,rare=-1;
int*result=(int*)malloc((n-k+1)*sizeof(int));
int res_i=0;
for(i=0;i<n;i++)
{
    while(front<=rear && nums[dq[rare]]<=nums[i])
    {
        rear--;
    }
    dq[++rare]=i;
    if(dq[front]==i-k)
    {
        front++;
    }
    if(i>=k-1)
    {
        result[res_i++]=nums[dq[front]];
    }
}
for(i=0;i<n-k+1;i++)
{
  printf("%d ",result[i]);   
}
print("\n");
free(nums);
free(dq);
free(result);
}
int main()
{
    solve();
    return 0;
}