#include <iostream>
#include <cstdlib>
#include <string>
#include <math.h>
#include <vector>
#include <algorithm>

using namespace std;

int n;

int in [1010];

struct num
{
       int val, q, loc;
       
       num ( int _val, int _loc ): val ( _val ), loc ( _loc ), q ( 1 )
       {}
};

vector <num> vec;

struct comp {
  bool operator() ( num a, num b )
  {
     if ( a.q > b.q ) return true;
     else if ( a.q == b.q )
     {
          if ( a.loc < b.loc ) return true;
          else return false;
     }
     else return false;
  }
}; 



int main ( void )
{
    cin >> n;
    int c;
    cin >> c;
    for ( int i = 0; i < n; ++i )
    {
        scanf ( "%d", &in [i] );
        bool found = false;
        for ( int j = 0; j < vec.size (); ++j )
        {
            if ( vec [j].val == in [i] ) vec [j].q++, found = true;
        } 
        if ( found == false ) vec.push_back ( num ( in [i], i ) );
    }
    
    sort ( vec.begin (), vec.end (), comp () );

    for ( int i = 0; i < vec.size (); ++i )
    {
        for ( int j = 0; j < vec [i].q; ++j )
        {
            printf ( "%d ", vec [i].val );
            //cout << vec [i].q << endl;
            //cin.get ();
        }
    }
    
    cout << endl;
    //system ( "pause" );
    return 0;
}







/*t nums [1010];
int locs [1010];

int in [1010];

bool comp ( int a, int b )
{
     if ( nums [a] > nums [b] ) return true;
     else if ( nums [a] == nums [b] )
     {
          if ( locs [a] < locs [b] ) return true;
          else return false;
     }
     else return;
}

int main ( void )
{
    cin >> n;
    for ( int i = 0; i < n; ++i )
    {
        cin >> in [i];
        nums [in[i]]++;
        if ( locs [in[i]] == 0 ) locs [in[i]] = i + 1;
    }
    
    sort ( in, in + n, comp );
    for ( int i = 0; i < n; ++i )
    {
        cout << in [i] << " ";

     system ( "pause" );
     return 0;
}*/
     
