/*
ZADATAK: kartice
JEZIK: c++
*/
#include <stdio.h>
#include <malloc.h>
typedef struct
{
    long long x,y;
}TPok;
TPok p[3002];

typedef struct elem
{
    long long x,y;
    int next;
    struct elem *sle;
}activ;
activ *a[1000034];
FILE *fi,*fo;

int sa(long long x,long long y)
{
    x=x%10009;
    y=y%100003;
    int res=(3*x+y)%1000033;
    if(res<0) return -res;
    else return res;
}

int add(long long x,long long y)
{
    activ *t;
    int res=0;
    int v;
    v=sa(x,y);
    t=a[v];
    while(t!=NULL && (t->x!=x && t->y!=y))
            t=t->sle;
    if(t==NULL)
     {
            t=(activ*)malloc(sizeof(activ));
            t->x=x;
            t->y=y;
            t->next=1;
            t->sle=a[v];
            a[v]=t;
            return 1;
        }
    else
     {
            res=t->next;
            t->next=t->next+1;
            return res+1;
        }
}

main()
{
    int n,i,j,maxx=0;
    long long x,y,v;
    fi=fopen("kartice.in","r");
    fo=fopen("kartice.out","w");
    fscanf(fi,"%d",&n); 
    for(i=1;i<=n;i++)
     {
            fscanf(fi,"%lld%lld",&p[i].x,&p[i].y);
            for(j=1;j<i;j++)
             {
                    x=p[j].x-p[i].x;
                    y=p[j].y-p[i].y;
                    if(x<0)
                     {
                            x=-x;
                            y=-y;
                        }
                    v=add(x,y);
                    if(v>maxx) maxx=v;
                }
            fprintf(fo,"%d\n",maxx);
        }   
    return 0;
}
