#include <algorithm>
#include <cstring>
#include <iostream>
#include <cstdio>
#include <vector>
#include <set>
#include <queue>
#include <stack>
#include <map>
using namespace std;
#define MAXN 1008

map< int, int > freq;
map< int, int > prva;

int n, c;

int niz[ MAXN ];

struct broj{
  int num, f, p;
  broj( int _num, int _f, int _p ) : num( _num ), f( _f ), p( _p ) {}
  friend bool operator < ( const broj &A, const broj &B ){
    if( A.f != B.f ) return A.f > B.f;
    return A.p < B.p;
  }
};

vector< broj > V;

int main( ){
  scanf( "%d%d", &n, &c );
  for( int i = 0; i < n; ++i ){
    int x; scanf( "%d", &x );
    if( freq.find( x ) == freq.end( ) )
      freq[x] = 1;
    else
      ++freq[x];
    if( prva.find( x ) == prva.end( ) )
      prva[x] = i;    
    niz[i] = x;
  }
  
  for( int i = 0; i < n; ++i ){
    if( prva[ niz[i] ] != i ) continue;
    V.push_back( broj( niz[i], freq[ niz[i] ], prva[ niz[i] ] ) );
  }
  
  sort( V.begin( ), V.end( ) );
  
  for( vector< broj >::iterator it = V.begin( ); it != V.end( ); ++it ){
    broj x = *it;
    for( int i = 0; i < x.f; ++i )
      cout << x.num << " ";
  }
  cout << endl;
  //system( "pause" );
  return 0;    
}
