#include <bits/stdc++.h>

using namespace std;
int a[500010],seg[1100000];
int log2(int n)
{
    int res=0,i=1;
    while(i<n)
    {
        res++;
        i=i<<1;
    }
    return res;
}

void sagradi(int poz,int p,int k)
{
    if(p<=poz&&poz<=k)seg[poz]=poz-p+1;
    else if(poz>k)return;
    else
    {
        sagradi(2*poz,p,k);
        sagradi(2*poz+1,p,k);
        if(a[seg[2*poz]]<=a[seg[2*poz+1]])seg[poz]=seg[2*poz];
        else seg[poz]=seg[2*poz+1];
    }
}
int mini(int l,int r)
{
    int res=seg[l];
    int dalj=1;
    int poz=l;
    while(true)
    {
        while(l<=(dalj<<1)*(poz>>1)&&(dalj<<1)*(poz>>1+1)-1<=r)
        {
            poz=poz>>1;
            dalj=dalj<<1;
            if(dalj*(poz+1)-1==r)
            {
                if(a[res]>a[seg[poz]])res=seg[poz];
                if(a[res]==a[seg[poz]])res=min(res,seg[poz]);
                return res;
            }
        }
        if(a[res]>a[seg[poz]])res=seg[poz];
        if(a[res]==a[seg[poz]])res=min(res,seg[poz]);
        if(l>(dalj<<1)*(poz>>1))poz=(dalj<<1)*((poz>>1)+1);
        if(r<(dalj<<1)*(poz>>1+1)-1)poz=dalj*(poz+1);
        dalj=1;
        if(poz>r)return res;
        if(poz==r)
        {
            if(a[res]>a[seg[poz]])res=seg[poz];
            if(a[res]==a[seg[poz]])res=min(res,seg[poz]);
            return res;
        }
    }
    return res;
}
int main()
{
    int n,k;
    scanf("%d %d",&n,&k);
    int p=1<<log2(n);
    int kr=p+n-1;
    a[0]=1000000001;
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    if(k==0)
    {
        for(int i=1;i<=n;i++)printf("%d ",a[i]);
        return 0;
    }
    sagradi(1,p,kr);
    int up=0,poz=1;
    while(n-poz>k-up&&up<n-k)
    {
        if(poz==k+up+1)
        {
            for(int i=poz;i<=n;i++)printf("%d ",a[i]);
            return 0;
        }
        //cout<<poz<<" "<<k+up+1<<":";
        poz=mini(poz+p-1,k+up+1+p-1);
        printf("%d ",a[poz]);
        //cout<<endl;
        poz++;
        up++;

    }

    return 0;
}