{
ZADATAK: kartice
JEZIK: PASCAL
}

PROGRAM KARTICE;
TYPE
  NODE = RECORD
    X,Y : LONGINT;
  END;
VAR
  T : ARRAY[1..3001] OF NODE;
  B1,B2 : ARRAY[1..30001] OF NODE;
  MAX : ARRAY[1..3001] OF INTEGER;
  N,I,MAXI,J,K,L,M,Q,W,T2MAXI,T1MAXI : INTEGER;
  F : BOOLEAN;

  PROCEDURE LOAD;
  VAR
    FIN : TEXT;
  BEGIN
    ASSIGN(FIN,'kartice.in');
    RESET(FIN);
      READLN(FIN,N);
      FOR I := 1 TO N DO BEGIN
        READLN(FIN,T[I].X,T[I].Y);
      END;
    CLOSE(FIN);
  END;

  PROCEDURE SORT(LO,HI:LONGINT);
  VAR
    LEFT,RIGHT,PIVOT:LONGINT;
    SWAP:NODE;
  BEGIN
    LEFT:=LO;
    RIGHT:=HI;
    IF (LEFT<>0) AND (RIGHT<>0) THEN PIVOT:=B1[(LEFT+RIGHT) DIV 2].X;
    WHILE LEFT<=RIGHT DO BEGIN
      WHILE B1[LEFT].X>PIVOT DO INC(LEFT);
      WHILE B1[RIGHT].X<PIVOT DO DEC(RIGHT);
      IF LEFT<=RIGHT THEN BEGIN
        SWAP:=B1[LEFT];
        B1[LEFT]:=B1[RIGHT];
        B1[RIGHT]:=SWAP;
        INC(LEFT);
        DEC(RIGHT);
      END;
    END;
    IF LEFT>LO THEN SORT(LO,RIGHT);
    IF RIGHT<HI THEN SORT(LEFT,HI);
  END;

  PROCEDURE SORT2(LO,HI:    IF RIGHT<HI THEN SORT(LEFT,HI);
  END;

  PROCEDURE SORT2(LO,HI:    IF RIGHT<HI THEN SORT(LEFT,HI);
  END;

  PROCEDURE SORT2(LO,HI:    IF R2[(LEFT+RIGHT) DIV 2].X;
    WHILE LEFT<=RIGHT DO BEGIN
      WHILE B2[LEFT].X>PIVOT DO INC(LEFT);
      WHILE B2[RIGHT].X<PIVOT DO DEC(RIGHT);
      IF LEFT<=RIGHT THEN BEGIN
        SWAP:=B2[LEFT];
        B2[LEFT]:=B2[RIGHT];
        B2[RIGHT]:=SWAP;
        INC(LEFT);
        DEC(RIGHT);
      END;
    END;
    IF LEFT>LO THEN SORT2(LO,RIGHT);
    IF RIGHT<HI THEN SORT2(LEFT,HI);
  END;


  PROCEDURE MAIN;
  VAR
    TX,TY : LONGINT;
  BEGIN
    MAX[1]:=0;
    MAX[2]:=1;
    FOR I:=3 TO N DO BEGIN
    MAXI:=0;
      FOR J:=1 TO I DO BEGIN
        B1[J]:=T[J];
      END;
      T2MAXI:=0;
        FOR K:=1 TO I DO BEGIN
          FOR L:=1 TO I DO BEGIN
            IF K<>L THEN BEGIN
              TX:=T[K].X-T[L].X;
              TY:=T[K].Y-T[L].Y;
              FOR M:=1 TO I DO BEGIN
                B2[M].X:=B1[M].X+TX;
                B2[M].Y:=B1[M].Y+TY;
              END;
              SORT(1,I);
              SORT2(1,I);
              T1MAXI:=0;
              FOR M:=1 TO I DO BEGIN
              F:=FALSE;
                W:=1;
                WHILE (B2[W].X>=B1[M].X) AND (F=FALSE) DO BEGIN
                  IF (B2[W].X=B1[M].X) AND (B2[W].Y=B1[M].Y) THEN BEGIN
                    INC(T1MAXI);
                    F:=TRUE;
                  END;
                INC(W);
                END;
              END;
            END;
            IF T1MAXI>T2MAXI THEN T2MAXI:=T1MAXI;
          END;
        END;
        MAX[I]:=T2MAXI;
    END;
  END;

  PROCEDURE UNLOAD;
  VAR
    FOUT : TEXT;
  BEGIN
    ASSIGN(FOUT,'kartice.out');
    REWRITE(FOUT);
      WRITELN(FOUT,MAX[1]);
      I:=2;
      WHILE MAX[I]<>0 DO BEGIN
        WRITELN(FOUT,MAX[I]);
        INC(I);
      END;
    CLOSE(FOUT);
  END;


BEGIN
  LOAD;
  MAIN;
  UNLOAD;
END.
