#include <bits/stdc++.h>
#define maxn 500010
using namespace std;

int n, k, a[maxn];
set<pair<int, int> > s;

void sol(int idx, int k1){
    if(idx >= n){
        return;
    }
    if(!k1){
        for(int i = idx; i < n; ++i){
            cout << a[i] << ' ';
        }
        return;
    }
    for(idx; s.size() < k1+1; ++idx){
        s.insert({a[idx], idx});
    }
    auto tmp = *s.begin();
    cout << tmp.first << ' ';
    s.erase(tmp);
    for(int i = idx-k1-1; i < tmp.second; ++i){
        s.erase({a[i], i});
        --k1;
    }
    sol(idx, k1);
}

int main()
{
    ios_base::sync_with_stdio(0);
    cout.tie(0);
    cin.tie(0);
    cin >> n >> k;
    for(int i = 0; i < n; ++i){
        cin >> a[i];
    }
    int lst = 0, idx = k+1;
    if(idx == n){
        cout << *min_element(a, a+n);
        return 0;
    }
    sol(0, k);
//    while(k and idx < n){
//        auto tmp = *s.begin();
//        cout << tmp.first << ' ';
//        s.erase(s.begin());
//        for(int i = lst; i < tmp.second; ++i){
//            s.erase({a[i], i});
//        }
//        k -= (tmp.second-lst);
//        lst = tmp.second+1;
//        s.insert({a[idx], idx});
//        ++idx;
//    }
//    for(int i = idx; i < n; ++i){
//        cout << a[i] << ' ';
//    }
    return 0;
}