uses crt;

var v:array[1..100] of integer;
    n:0..100;



 procedure valid;
 var i,j:byte;
 begin

  for i:=1 to n-1 do
      for j:=i+1 to n do
          if v[i]=v[j] then v[j]:=0;

 end;



 function ok:boolean;
 var i:byte; k:boolean;
 begin

  k:=false;

  i:=1;

  while (i<=n) and (k=false) do
        begin
         if v[i]=0 then k:=true
                   else i:=i+1;
        end;

  ok:=k;
 end;



 procedure citire;
 var c,i:0..100; x:integer;
 begin

  c:=0;

  readln(n);

  for i:=1 to n do
      begin
       read(x);
       v[i]:=x mod 23;
      end;

  for i:=1 to n do
      write(v[i],' '); writeln;

  valid;

  if ok=true then c:=c+1;

  for i:=1 to n do
      if v[i]<>0 then inc(c);

  writeln(c);
 end;


begin
 clrscr;
 citire;
end.


 function ok:boolean;
 var i:byte; k:boolean;
 begin

  k:=false;

  i:=1;

  while (i<=n) and (k=false) do
        begin
         if v[i]=0 then k:=true
                   else i:=i+1;
        end;

  ok:=k;
 end;



 procedure citire;
 var i:0..100; x:integer;
 begin

  c:=0;

  readln(n);

  for i:=1 to n do
      begin
       read(x);
       v[i]:=x mod 23;
      end;

  valid;

  if ok=true then c:=1;

  for i:=1 to n do
      if v[i]<>0 then inc(c);

  writeln(c);
 end;


begin
 clrscr;
 citire;
end.