#include<iostream>
#include<map>
#include<vector>
#include<iterator>
#include<algorithm>
using namespace std;
struct num {
int val, count, index;
num(int v, int c, int i) {
val=v;
count=c;
index=i;
}
};
bool operator < (num a, num b) {
if(a.count==b.count) {
return a.index<b.index;
}
else return a.count>b.count;
}
int main () {
int n,c;
//freopen("input.txt","r",stdin);
map <int , pair<int,int> > m;
scanf("%d %d",&n,&c);
int temp;
for(int i=0;i<n;i++) {
scanf("%d",&temp);
map <int, pair <int,int> >::iterator it = m.find(temp);
if(it==m.end()) {
m[temp]=make_pair(i,1);
}
else {
it->second.second++;
}
}
vector <num> v;
for(map< int,pair<int,int> >::iterator it=m.begin();it!=m.end();it++) {
// cout<<it->first<<" "<<it->second.first<<" "<<it->second.second<<endl;
v.push_back(num(it->first,it->second.second,it->second.first));
}
sort(v.begin(), v.end());
for(vector <num>::iterator it=v.begin();it!=v.end();it++) {
for(int i=0;i<it->count;i++) {
printf("%d ",it->val);
}
}
printf("\n");
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiNpbmNsdWRlPG1hcD4KI2luY2x1ZGU8dmVjdG9yPgojaW5jbHVkZTxpdGVyYXRvcj4KI2luY2x1ZGU8YWxnb3JpdGhtPgogCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKc3RydWN0IG51bSB7CiAgICAgICAgaW50IHZhbCwgY291bnQsIGluZGV4OwogICAgICAgIG51bShpbnQgdiwgaW50IGMsIGludCBpKSB7CiAgICAgICAgICAgICAgICB2YWw9djsKICAgICAgICAgICAgICAgIGNvdW50PWM7CiAgICAgICAgICAgICAgICBpbmRleD1pOwogICAgICAgIH0KfTsKIApib29sIG9wZXJhdG9yIDwgKG51bSBhLCBudW0gYikgewogICAgICAgIGlmKGEuY291bnQ9PWIuY291bnQpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhLmluZGV4PGIuaW5kZXg7CiAgICAgICAgfQogICAgICAgIGVsc2UgcmV0dXJuIGEuY291bnQ+Yi5jb3VudDsKfQogCmludCBtYWluICgpIHsKICAgICAgICBpbnQgbixjOwogICAgICAgIC8vZnJlb3BlbigiaW5wdXQudHh0IiwiciIsc3RkaW4pOwogICAgICAgIG1hcCA8aW50ICwgcGFpcjxpbnQsaW50PiA+IG07CiAgICAgICAgc2NhbmYoIiVkICVkIiwmbiwmYyk7CiAgICAgICAgaW50IHRlbXA7CiAgICAgICAgZm9yKGludCBpPTA7aTxuO2krKykgewogICAgICAgICAgICAgICAgc2NhbmYoIiVkIiwmdGVtcCk7CiAgICAgICAgICAgICAgICBtYXAgPGludCwgcGFpciA8aW50LGludD4gPjo6aXRlcmF0b3IgaXQgPSBtLmZpbmQodGVtcCk7CiAgICAgICAgICAgICAgICBpZihpdD09bS5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBtW3RlbXBdPW1ha2VfcGFpcihpLDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQuc2Vjb25kKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHZlY3RvciA8bnVtPiB2OwogICAgICAgIGZvcihtYXA8IGludCxwYWlyPGludCxpbnQ+ID46Oml0ZXJhdG9yIGl0PW0uYmVnaW4oKTtpdCE9bS5lbmQoKTtpdCsrKSB7Ci8vICAgICAgICAgICAgICAgIGNvdXQ8PGl0LT5maXJzdDw8IiAgIjw8aXQtPnNlY29uZC5maXJzdDw8IiAiPDxpdC0+c2Vjb25kLnNlY29uZDw8ZW5kbDsKICAgICAgICAgICAgICAgIHYucHVzaF9iYWNrKG51bShpdC0+Zmlyc3QsaXQtPnNlY29uZC5zZWNvbmQsaXQtPnNlY29uZC5maXJzdCkpOwogICAgICAgIH0KICAgICAgICBzb3J0KHYuYmVnaW4oKSwgdi5lbmQoKSk7CiAgICAgICAgZm9yKHZlY3RvciA8bnVtPjo6aXRlcmF0b3IgaXQ9di5iZWdpbigpO2l0IT12LmVuZCgpO2l0KyspIHsKICAgICAgICAgICAgICAgIGZvcihpbnQgaT0wO2k8aXQtPmNvdW50O2krKykgewogICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIiVkICIsaXQtPnZhbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHByaW50ZigiXG4iKTsKICAgICAgICByZXR1cm4gMDsKfSAg