#include <bits/stdc++.h>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, d;
cin >> n >> d;
vector<int> v(n);
unordered_map<int, int> freq;
for (int i = 0; i < n; i++)
{
cin >> v[i];
freq[v[i]]++;
}
priority_queue<pair<int, int>> pq;
for (auto it : freq)
pq.push({it.second, it.first});
queue<pair<int, int>> cooldown;
vector<int> ans;
while (!pq.empty())
{
pair<int, int> top = pq.top();
pq.pop();
int count = top.first;
int num = top.second;
ans.push_back(num);
count--;
cooldown.push({count, num});
if (cooldown.size() >= d)
{
pair<int, int> front = cooldown.front();
cooldown.pop();
if (front.first > 0)
pq.push(front);
}
}
if (ans.size() == n)
{
cout << "Yes" << endl;
for (int x : ans)
cout << x << " ";
cout << endl;
}
else
{
cout << "No" << endl;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IG4sIGQ7CiAgICBjaW4gPj4gbiA+PiBkOwogICAgdmVjdG9yPGludD4gdihuKTsKICAgIHVub3JkZXJlZF9tYXA8aW50LCBpbnQ+IGZyZXE7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gdltpXTsKICAgICAgICBmcmVxW3ZbaV1dKys7CiAgICB9CgogICAgcHJpb3JpdHlfcXVldWU8cGFpcjxpbnQsIGludD4+IHBxOwogICAgZm9yIChhdXRvIGl0IDogZnJlcSkKICAgICAgICBwcS5wdXNoKHtpdC5zZWNvbmQsIGl0LmZpcnN0fSk7CgogICAgcXVldWU8cGFpcjxpbnQsIGludD4+IGNvb2xkb3duOwogICAgdmVjdG9yPGludD4gYW5zOwoKICAgIHdoaWxlICghcHEuZW1wdHkoKSkKICAgIHsKICAgICAgICBwYWlyPGludCwgaW50PiB0b3AgPSBwcS50b3AoKTsKICAgICAgICBwcS5wb3AoKTsKCiAgICAgICAgaW50IGNvdW50ID0gdG9wLmZpcnN0OwogICAgICAgIGludCBudW0gPSB0b3Auc2Vjb25kOwoKICAgICAgICBhbnMucHVzaF9iYWNrKG51bSk7CiAgICAgICAgY291bnQtLTsKCiAgICAgICAgY29vbGRvd24ucHVzaCh7Y291bnQsIG51bX0pOwoKICAgICAgICBpZiAoY29vbGRvd24uc2l6ZSgpID49IGQpCiAgICAgICAgewogICAgICAgICAgICBwYWlyPGludCwgaW50PiBmcm9udCA9IGNvb2xkb3duLmZyb250KCk7CiAgICAgICAgICAgIGNvb2xkb3duLnBvcCgpOwogICAgICAgICAgICBpZiAoZnJvbnQuZmlyc3QgPiAwKQogICAgICAgICAgICAgICAgcHEucHVzaChmcm9udCk7CiAgICAgICAgfQogICAgfQoKICAgIGlmIChhbnMuc2l6ZSgpID09IG4pCiAgICB7CiAgICAgICAgY291dCA8PCAiWWVzIiA8PCBlbmRsOwogICAgICAgIGZvciAoaW50IHggOiBhbnMpCiAgICAgICAgICAgIGNvdXQgPDwgeCA8PCAiICI7CiAgICAgICAgY291dCA8PCBlbmRsOwogICAgfQogICAgZWxzZQogICAgewogICAgICAgIGNvdXQgPDwgIk5vIiA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9Cg==