program sort;
var n,k,j:integer;
    c: longint;
    p:array[1..1000] of longint;
    q:array[1..1000,1..2] of longint;

procedure ulaz;
var i:integer;
begin
  for i:=1 to n do read(p[i]);
end;

procedure ispisi(broj, puta:longint);
var i:integer;
begin
  for i:=1 to puta do write(broj,' ');
end;

function broji(x:longint):integer;
var i:integer;
begin
  broji:=0;
  for i:=1 to n do
    if p[i]=x then inc(broji);
end;

procedure redukcija;
var i:integer;
    bilo:boolean;
begin
  j:=1;
  q[1,1]:=p[1];
  q[1,2]:=broji(q[1,1]);
  for i:=2 to n do
  begin
    bilo:=false;
    for k:=1 to j do
      if p[i]=q[k,1] then bilo:=true;
    if (bilo=false) then
    begin
      j:=j+1;
      q[j,1]:=p[i];
      q[j,2]:=broji(q[j,1]);
    end;
  end;

end;

procedure provjera;
var i, t1, t2, pon:integer;
    sort:boolean;
begin
pon:=1;
repeat
  sort:=true;
  for i:=1 to j-pon do
		begin
			if q[i,2]<q[i+1,2] then begin
         t1:=q[i+1,1];
         t2:=q[i+1,2];
         q[i+1,1]:=q[i,1];
         q[i+1,2]:=q[i,2];
         q[i,1]:=t1;
         q[i,2]:=t2;
         sort:=false;
	      end;
		end;
  pon:=pon+1;
until sort;

 for i:=1 to j do
   ispisi (q[i,1],q[i,2]);
end;

begin
  readln(n,c);
  ulaz;
  redukcija;
  provjera;
end.
