#include <cstdio>
#include <algorithm>
#include <set>
#include <map>
#include <vector>

using namespace std;

struct broj
{
	int ime, kada, koliko;
};

int polje[ 1005 ];
multiset< int > MS;
set< int > S;
map< int, int > M;
vector< broj > V;

bool cmp( const broj &a, const broj &b )
{
	if( a.koliko != b.koliko )
		return a.koliko > b.koliko;
	return a.kada < b.kada;
}

int main( void )
{
	int n, c;
	scanf( "%d %d", &n, &c );
	
	broj tmp;
	for( int i = 0; i < n; ++i )
	{
		scanf( "%d", &polje[ i ] );
		S.insert( polje[ i ] );
		MS.insert( polje[ i ] );
		if( M.find( polje[ i ] ) != M.end() )
			continue;
		M[ polje[ i ] ] = i;
	}
	
	for( set< int >::iterator si = S.begin(); si != S.end(); ++si )
	{
		tmp.ime = *si;
		tmp.kada = M.find( tmp.ime )->second;
		tmp.koliko = MS.count( tmp.ime );
		V.push_back( tmp );
	}
	
	sort( V.begin(), V.end(), cmp );
	
	for( int i = 0; i < V.size(); ++i )
	{
		int ide = V[ i ].koliko;
		for( int j = 0; j < ide; ++j )
			printf( "%d ", V[ i ].ime );
	}
	
	printf( "\n" );
	
	return 0;
}
