#include <cstdio>
#include <algorithm>
#include <map>
#include <set>

using namespace std;

const int MaxN = 1100;

struct broj {
    int val,poz;
};

int n,c;

map < int, broj > M;
map < int, broj >::iterator it;

int niz [ MaxN ];

bool operator < ( broj a,broj b ) {
    if ( a.val != b.val ) return a.val > b.val;
    return a.poz < b.poz;
}

set < broj > S;
set < broj >::iterator it2;

int main ( ) {
    scanf("%d%d",&n,&c);
    for ( int i = 0 ; i < n ; i++) {
        scanf("%d",&niz [ i ] );

        if ( M [ niz [ i ] ].val == 0 ) {
            M [ niz [ i ] ].poz = i;
        }

        M [ niz [ i ] ].val++;
    }

    it = M.begin();

    for ( ; it != M.end() ; it++)
        S.insert ( it -> second );


    it2 = S.begin();

    for ( ; it2 != S.end() ; it2++) {
        for ( int j = 0 ; j < it2 -> val ; j++)
            printf("%d ",niz [ it2 -> poz ] );
    }

    return 0;
}
