{
ZADATAK: kartice
JEZIK: pascal
}

program kartice;
const
  MaxN = 3000;
type
  koord = record
           x,y : longint;
          end;
var
  A : array [1..MaxN] of koord;
  br : integer;

procedure DatIn;
var
  f : text;
  i : integer;
begin
  assign(f,'kartice.in');
  reset(f);
  readln(f,br);
  for i := 1 to br do
    readln(f,A[i].x,A[i].y);
  close(f);
end;

procedure Solve;
var
  f : text;
  i,m,n,k,l : integer;
  dx,dy : longint;
  Nova : koord;
  counter,konacno : integer;

begin
  assign(f,'kartice.out');
  rewrite(f);
  writeln(f,'0');
  writeln(f,'1');

  for i:= 3 to br do
  begin
    counter := 0;
    konacno := 0;
    begin
      for m := 1 to br do
        for n := m+1 to br do
          begin
            counter := 0;
            dx := A[m].x - A[n].x;
            dy := A[m].y - A[n].y;
            for k := 1 to i do
              begin
                {counter :=0;}
                Nova.x := A[k].x + dx;
                Nova.y := A[k].y + dy;
                for l := 1 to i do
                  if (Nova.x = A[l].x) and (Nova.y = A[l].y) then
                    begin
                      inc (counter);
                      if counter > konacno then
                      konacno := counter;
                    end;
              end;
          end;
    end;
    writeln(f,konacno);
  end;
  close(f);
end;

begin
  DatIn;
  Solve
end.


