#include <bits/stdc++.h>

using namespace std;

pair<int,int> niz[500005];
int ispis[500005];

bool cmp(pair<int,int> a, pair<int,int> b)
{
    return a.first>b.first;
}

bool cmp2(pair<int,int> a, pair<int,int> b)
{
    return a.second<b.second;
}

int main ()
{
    int n,k;
    cin >> n >> k;
    bool pr2 = true;
    for(int i=0;i<n;i++)
    {
        cin >> niz[i].first;
        niz[i].second = i;
    }
    /*if(true/*pr2)
    {
        for(int i=0;i<n;i++)
        {
            if(niz[i] == 1 && k>0)
            {
                ispis[i]=-1;
                k--;
            }
        }
        if(k!=0)
        {
            for(int i=0;i<n;i++)
            {
                if(niz[i] == 0  && k>0)
                {
                    ispis[i]=-1;
                    k--;
                }
            }
        }
        for(int i=0;i<n;i++)
        {

            if(ispis[i] == 0) cout << niz[i] << " ";
        }
    }*/
    int p=0;
    int t=0;
    while(p<n && t < k)
    {
        while(niz[p].first <=  niz[p+1].first && p < n)
        {
            p++;
        }
        if(p>=n)
            break;
        ispis[p]=-1;
        p++;
        t++;
        //cout << "gT: " << p << endl;
    }
    if(t < k)
    {
        sort(niz, niz+n, cmp);

        int br=0;
        /*for(int i=0;i<n;i++)
        {
            //cout << ispis[i] << " ";
            if(ispis[niz[i].second]==0)
                cout << niz[i].first << " ";
        }*/
        //cout <<"\nT:" << t << endl;
        while(t<k)
        {
            if(ispis[niz[br].second] == -1)
            {
                br++;
                continue;
            }
            ispis[niz[br].second]=-1;
            br++;
            t++;
        }
    }
    sort(niz, niz+n, cmp2);
    for(int i=0;i<n;i++)
    {
        //cout << ispis[i] << " ";
        if(ispis[i]==0)
            cout << niz[i].first << " ";
    }

}