#include <stdio.h>

using namespace std;

int niz[500007];

//vraca poz
int min_range(int L,int D)
{
    int tmin=niz[L];
    int poz=L;
    for(int i=L+1;i<D;i++)
    {
        if(niz[i]<tmin){tmin=niz[i];poz=i;}
    }
    return poz;
}

int main()
{
    int n,k;
    scanf("%d%d",&n,&k);
    for(int i=0;i<n;i++)
    {
        scanf("%d",&niz[i]);
    }
    //cout<<min_range(0,k+1)<<" "<<niz[min_range(0,k+1)]<<endl;
    //cout<<min_range(1,k+1+1)<<" "<<niz[min_range(1,k+1+1)]<<endl;
    //cout<<min_range(3,k+1+1+1)<<" "<<niz[min_range(3,k+1+1+1)]<<endl;
    int pre=0;
    for(int i=0;i<(n-k);i++)
    {
        int tre=min_range(pre,k+1+i);
       printf("%d ",niz[tre]);
        pre=tre+1;
    }
    return 0;
}