#include<bits/stdc++.h>
using namespace std;
vector<int>fun(vector<int>&arr,int d){
unordered_map<int,int>mp;
for(int num:arr){
mp[num]++;
}
priority_queue<pair<int,int>>heap;
for(auto&[num,freq]:mp){
heap.push({freq,num});
}
queue<pair<int,int>>wait;
vector<int>ans;
int i=0;
while(!heap.empty()||!wait.empty()){
if(!wait.empty()&&wait.front().first<=i){
int num=wait.front().second;
wait.pop();
if(mp[num]>0){
heap.push({mp[num],num});
}
}
if(heap.empty())return{};
auto[freq,num]=heap.top();
heap.pop();
ans.push_back(num);
mp[num]--;
if(mp[num]>0){
wait.push({i+d,num});
}
i++;
}
return ans;
}
int main(){
vector<int>input={1,1,1,2,2};
int d=2;
vector<int>output=fun(input,d);
if(output.empty()){
cout<<"NO";
}else{
cout<<"YES -> ";
for(int num:output){
cout<<num<<" ";
}
cout<<endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnZlY3RvcjxpbnQ+ZnVuKHZlY3RvcjxpbnQ+JmFycixpbnQgZCl7CiAgICB1bm9yZGVyZWRfbWFwPGludCxpbnQ+bXA7CiAgICBmb3IoaW50IG51bTphcnIpewogICAgICAgIG1wW251bV0rKzsKICAgIH0KICAgIHByaW9yaXR5X3F1ZXVlPHBhaXI8aW50LGludD4+aGVhcDsKICAgIGZvcihhdXRvJltudW0sZnJlcV06bXApewogICAgICAgIGhlYXAucHVzaCh7ZnJlcSxudW19KTsKICAgIH0KICAgIHF1ZXVlPHBhaXI8aW50LGludD4+d2FpdDsKICAgIHZlY3RvcjxpbnQ+YW5zOwogICAgaW50IGk9MDsKICAgIHdoaWxlKCFoZWFwLmVtcHR5KCl8fCF3YWl0LmVtcHR5KCkpewogICAgICAgIGlmKCF3YWl0LmVtcHR5KCkmJndhaXQuZnJvbnQoKS5maXJzdDw9aSl7CiAgICAgICAgICAgIGludCBudW09d2FpdC5mcm9udCgpLnNlY29uZDsKICAgICAgICAgICAgd2FpdC5wb3AoKTsKICAgICAgICAgICAgaWYobXBbbnVtXT4wKXsKICAgICAgICAgICAgICAgIGhlYXAucHVzaCh7bXBbbnVtXSxudW19KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihoZWFwLmVtcHR5KCkpcmV0dXJue307CiAgICAgICAgYXV0b1tmcmVxLG51bV09aGVhcC50b3AoKTsKICAgICAgICBoZWFwLnBvcCgpOwogICAgICAgIGFucy5wdXNoX2JhY2sobnVtKTsKICAgICAgICBtcFtudW1dLS07CiAgICAgICAgaWYobXBbbnVtXT4wKXsKICAgICAgICAgICAgd2FpdC5wdXNoKHtpK2QsbnVtfSk7CiAgICAgICAgfQogICAgICAgIGkrKzsKICAgIH0KICAgIHJldHVybiBhbnM7Cn0KCmludCBtYWluKCl7CiAgICB2ZWN0b3I8aW50PmlucHV0PXsxLDEsMSwyLDJ9OwogICAgaW50IGQ9MjsKICAgIHZlY3RvcjxpbnQ+b3V0cHV0PWZ1bihpbnB1dCxkKTsKICAgIGlmKG91dHB1dC5lbXB0eSgpKXsKICAgICAgICBjb3V0PDwiTk8iOwogICAgfWVsc2V7CiAgICAgICAgY291dDw8IllFUyAtPiAiOwogICAgICAgIGZvcihpbnQgbnVtOm91dHB1dCl7CiAgICAgICAgICAgIGNvdXQ8PG51bTw8IiAiOwogICAgICAgIH0KICAgICAgICBjb3V0PDxlbmRsOwogICAgfQogICAgcmV0dXJuIDA7Cn0=