{
zadatak: kartice
jezik: pascal
}
program kartice;
const MaxN = 3000;
type kord = record
        x,y : longint
       end;
var A,B : array[1..MaxN] of kord;
    t : text;
    n : integer;
    m : longint;

procedure input;
var i : integer;
begin
 assign(t,'kartice.in');
 reset(t);
 readln(t,n);
 for i:=1 to n do readln(t,A[i].x,A[i].y);
 close(t);
 assign(t,'kartice.out');
 rewrite(t);
 writeln(t,'0');
 writeln(t,'1')
end;

function ok(u,v : longint) : boolean;
var o : longint;
    t : boolean;
begin
 t:=true;
 for o:=1 to m do
  if (b[o].x=u) and (b[o].y=v) then t:=false;
 if t then
  begin
   inc(m);
   b[m].x:=u;
   b[m].y:=v
  end;
 ok:=t
end;

procedure work;
var r,k,p,sum,i,j,max : integer;
    u,v : longint;
begin
 for k:=3 to N do
  begin
   m:=0; max:=0;
   for i:=1 to k do
    for j:=i+1 to k do
     if ok(A[i].x-A[j].x,A[i].y-A[j].y) then
     begin
      u:=A[i].x-A[j].x;
      v:=A[i].y-A[j].y;
      sum:=0;
      for r:=1 to k do
       for p:=r+1 to k do
        begin
         if ((A[r].x+u)=A[p].x)and((A[r].y+v)=A[p].y)
          then inc(sum);
         if ((A[r].x-u)=A[p].x)and((A[r].y-v)=A[p].y)
          then inc(sum)
        end;
      if (sum>max) then max:=sum
     end;
   writeln(t,max)
  end;
 close(t)

end;

begin
 input;
 work
end.
