{
ZADATAK: kartice
JEZIK: pascal
}
Program kartice;
type niz=array[0..10000] of longint;
     mat=array[0..3000,0..3000] of longint;
var f:text;
    n,i,j,k,l,max,pok,poc,kraj,tren,rx,ry:longint;
    T:mat;
    X,Y,XX,YY:niz;

procedure bp(x1,y1:longint);
  var nadjen:boolean;
  begin
    poc:=1;
    kraj:=i;
    nadjen:=false;
    while (poc<=kraj) and not nadjen do
      begin
        tren:=(poc+kraj) div 2;
        if (XX[tren]=x1) and (YY[tren]=y1)
        then
          nadjen:=true;
        if (XX[tren]<x1) or ((XX[tren]=x1) and (YY[tren]<y1))
        then
          poc:=tren+1;
        if (XX[tren]>x1) or ((XX[tren]=x1) and (YY[tren]>y1))
        then
          kraj:=tren-1
      end;
  end;

procedure zameni(var a,b:longint);
  var p:longint;
  begin
    p:=a; a:=b; b:=p
  end;







begin
  assign(f,'kartice.in');
  reset(f);
  read(f,n);
  for i:=1 to n do
    begin
      read(f,X[i]);
      read(f,Y[i])
    end;
  close(f);

  T[1,1]:=0;

  assign(f,'kartice.out');
  rewrite(f);
  XX[1]:=X[1];
  YY[1]:=Y[1];
  writeln(f,T[1,1]);
  for i:=2 to n do
    begin
      XX[i]:=X[i];
      YY[i]:=Y[i];
      pok:=i;
      while (pok>1) and
            ((XX[pok]<XX[pok-1]) or ((XX[pok]=XX[pok-1]) and (YY[pok]<YY[pok-1]))) do
        begin
          zameni(XX[pok],XX[pok-1]);
          zameni(YY[pok],YY[pok-1]);
          pok:=pok-1
        end;
      max:=0;
      for j:=1 to i do
        for k:=1 to i do
          if k<>j
          then
            if (j<i) and (k<i)
            then
              begin
                rx:=X[k]-X[j];
                ry:=Y[k]-Y[j];
                bp(X[i]+rx,Y[i]+ry);
                if poc<=kraj
                then
                  T[j,k]:=T[j,k]+1;
                if T[j,k]>max
                then
                  max:=T[j,k]
              end
            else
              begin
                rx:=X[k]-X[j];
                ry:=Y[k]-Y[j];
                T[j,k]:=1;
                for l:=1 to i do
                  if l<>j
                  then
                    begin
                      bp(X[l]+rx,Y[l]+ry);
                      if poc<=kraj
                      then
                        T[j,k]:=T[j,k]+1;
                    end;
                if T[j,k]>max
                then
                  max:=T[j,k]
              end
          else
            T[j,k]:=0;
      writeln(f,max);


    end;
  close(f);

end.
