#include<bits/stdc++.h>
using namespace std;
#define N 500000
struct drvo{
    int m,j;
    void operator=(drvo &a){
        m=a.m;j=a.j;
    }
};
int n,k,x[N],broj,resenje[N],z;
drvo s[4*N];
bool postoji[N];
void update(int l,int d,int pos,int i){
    if(l==d&&l==i){
        s[pos].m=-1;
        return;
    }
    if(l==d&&d!=i)return;
    if(i<l||i>d)
        return;
    int mid=(l+d)/2;
    update(l,mid,2*pos+1,i);
    update(mid+1,d,2*pos+2,i);
    //s[pos]=max(s[2*pos+1],s[2*pos+2]);
    if(s[2*pos+1].m>s[2*pos+2].m)
        s[pos]=s[2*pos+1];
    else
        s[pos]=s[2*pos+2];
}
void napravi(int l,int d,int pos){
    if(l==d){
        s[pos].m=x[l];
        s[pos].j=l;
        return;
    }
    int mid=(l+d)/2;
    napravi(l,mid,2*pos+1);
    napravi(mid+1,d,2*pos+2);
    if(s[2*pos+1].m>s[2*pos+2].m)
        s[pos]=s[2*pos+1];
    else
        s[pos]=s[2*pos+2];
}
drvo query(int l,int d,int ql,int qd,int pos){
    drvo e;
    e.m=-1;
    e.j=n-1;
    //cout<<l<<" "<<d<<endl;
    if(l>qd||d<ql)
        return e;
    if(ql<=l&&qd>=d)
        return s[pos];
    int mid=(l+d)/2;
    drvo c=query(l,mid,ql,qd,2*pos+1),w=query(mid+1,d,ql,qd,2*pos+2);
    if(c.m>w.m)
        return c;
    else
        return w;
}
void ispis(int l,int d,int pos){
    if(l==d){
        cout<<l<<" "<<d<<" "<<s[pos].m<<endl;
        return;
    }
    int mid=(l+d)/2;
    ispis(l,mid,2*pos+1);
    ispis(mid+1,d,2*pos+2);
    cout<<l<<" "<<d<<" "<<s[pos].m<<endl;
}
void radi(){
    int i=0,j=k,e=0,l;
    broj=0;
    while(log2(n)!=floor(log2(n))){
        x[n]=-1;
        postoji[n]=0;
        n++;
    }
    napravi(0,n-1,0);
    for(e;e<k;e++){
        l=query(0,n-1,i,j,0).j;
        postoji[l]=0;
        update(0,n-1,0,l);
        broj++;
        while(!postoji[i]){
            i++;
            broj--;
        }
        while((j-i)!=k+broj&&j<z-1)j++;
    }
    int u=0;
    for(int i=0;i<n;i++)
        if(postoji[i])
            resenje[u++]=x[i];
    for(int i=0;i<z-k;i++)
        cout<<resenje[i]<<" ";

}
int main(){
    cin>>n>>k;
    z=n;
    for(int i=0;i<n;i++){
        cin>>x[i];
        postoji[i]=1;
    }
    if(k==0){
        for(int i=0;i<n;i++)
            cout<<x[i]<<" ";
        return 0;
    }
    radi();
}