//Matija Herceg
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<fstream>
#include<string>
#include<algorithm>
#include<list>
using namespace std;
struct broji{
       int a;
       int prv;
       int brojac;
       broji(){}
       broji(int _a, int _prv){
                 a=_a;
                 prv=_prv;
                 brojac=1;
       }
};
broji niz[1001];
int n,c,b=0;
list <int> sorted;


void daj(int a,int poz){
     int fnd=0;
     for (int i=0;i<b; i++)
     if (niz[i].a==a) {niz[i].brojac++; fnd=1;}
     if (!fnd){ niz[b]=broji(a,poz); b++; }
}
     
void sortaj(){
     int mx=0,pz=-1;
     for (int i=0; i<n; i++){
            if (niz[i].brojac>mx){ mx=niz[i].brojac; pz=i;}
            else
            if (niz[i].brojac==mx && niz[i].prv<niz[pz>=0 ? pz : i].prv)
            pz=i;
     }
     if (pz>=0){
     for (int i=0; i<niz[pz].brojac; i++) sorted.push_back(niz[pz].a);
     niz[pz].brojac=0;
     sortaj();
     }
}

int main(){
    memset(niz, 0,sizeof(niz));
    cin>>n>>c;
    for (int i=0; i<n; i++){
        cin>>c;
        daj(c,i);
    }
    
    sortaj();
    
    while(!sorted.empty()){
        cout<<sorted.front()<<" ";
        sorted.pop_front();
    }
    
    //system("pause");
    return 0;
}
