#include <bits/stdc++.h>

using namespace std;

struct clan{
    int id;
    int a;
    bool operator<(const clan& p) const{
        if(a>p.a){
            return true;
        }
        else{
            if(a<p.a){
                return false;
            }
            else{
                if(id<p.id){
                    return false;
                }
                else{
                    return true;
                }
            }
        }
    }
};

clan b[500000];
int a[500000],c[500000],br=0;
priority_queue <clan> pq;

void ispisi(int k){
    int i;
    for(i=0;i<k;i++){
        cout<<pq.top().a<<" "<<pq.top().id<<"\n";
        pq.pop();
    }
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cerr.tie(0);
    b[0].id=-1;
    clan pom;
    int n,k,i,kk;
    cin>>n>>kk;
    k=kk;
    for(i=0;i<n;i++){
        cin>>a[i];
    }
    i=0;
    while((k>0)&&(i<n)){
        if(pq.size()<k+1){
            pom.a=a[i];
            pom.id=i;
            pq.push(pom);
            i++;
        }
        else{
            if(pq.top().id>b[max(br-1,0)].id){
                b[br].a=pq.top().a;
                b[br].id=pq.top().id;
                br++;
                k=kk-b[br-1].id+br-1;
            }
            pq.pop();
        }
    }
    if(k>0){
        for(i=b[br-1].id+1;i<n;i++){
            c[i-b[br-1].id-1]=a[i];
        }
        i=0;
        while(i<n-k){
            int mm=c[i];
            int indx=i;
            for(int j=i;j<i+k+1;j++){
                if(mm>c[j]){
                    mm=c[j];
                    indx=j;
                }
            }
            b[br].a=c[indx];
            br++;
            k=k-indx+i;
            i=indx+1;
        }
    }
    for(i=0;i<n-kk;i++){
        cout<<b[i].a<<" ";
    }
    return 0;
}