#include <stdio.h>
#include <math.h>
#include <algorithm>
#define cmp(i,j) ((a[i].x < a[j].x) || (egal(a[i].x, a[j].x) && a[i].y <= a[j].y))
#define nmax 1001
using namespace std;
int n;
int i,j,suma;
struct punct{float x,y;}a[nmax],aux;
bool used[nmax][nmax];
void citire();
void output();
bool egal(float a, float b){return (a - b <= 0.00001 && b - a <= 0.00001);}
int cmp2(float z, float t, punct q)
{
if(egal(z, q.x)&& egal(t, q.y)) return 0;
else if((z < q.x) || (egal(z,q.x) && t < q.y)) return -1;
else return 1;
}
//quicksort
void quicksort(int start, int end){
if(end - start < 1) return;
int pivot = start, i = start, k = end;
aux=a[start],a[start]=a[(start+end)/2],a[(start+end)/2]=aux;
while(k>i)
{
while( cmp(i,pivot) && i<=end && k > i)
++i;
while(!cmp(k,pivot) && k>=start && k>=i)
--k;
if(k>i){
aux=a[k],a[k]=a[i],a[i]=aux;
}
}
aux=a[start],a[start]=a[k],a[k]=aux;
quicksort(start,k-1);
quicksort(k+1,end);
}
//cautare binara
int cautareBinara(float x, float y){
int suma,lo,hi,mid;
for (lo = 0, hi = n-1; lo <= hi; )
{
mid = lo + (hi-lo) / 2;
if (cmp2(x,y,a[mid])<0) hi = mid-1;
else if (cmp2(x,y,a[mid])>0) lo = mid+1;
else return mid;
}
return 0;
}
int main(){
citire();
quicksort(0,n-1);
freopen("patrate3.out","w",stdout);
int x1,x2;
float mijx,mijy,dx,dy;
for(i=0;i<n-1;++i)
for(j=i+1;j<n;++j)
if(!used[i][j])
{
mijx = (a[i].x + a[j].x) / 2;
mijy = (a[j].y + a[i].y) / 2;
dx = fabs(mijx - a[i].x);
dy = fabs(mijy - a[i].y);
if(a[i].y < a[j].y)
x1 = cautareBinara(mijx + dy, mijy - dx),
x2 = cautareBinara(mijx - dy, mijy + dx);
else
x1 = cautareBinara(mijx - dy, mijy + dx),
x2 = cautareBinara(mijx + dy, mijy - dx);
if(x1 && x2)
++suma,used[x2][x1]=1;
// printf("%d\n",suma),
// printf("%d %.4f %.4f\n",i,a[i].x,a[i].y),
// printf("%d %.4f %.4f\n",x1,a[x1].x,a[x1].y),
// printf("%d %.4f %.4f\n",j,a[j].x,a[j].y),
// printf("%d %.4f %.4f\n",x2,a[x2].x,a[x2].y);
}
printf("%d\n",suma);
return 0;
}
void citire(){
freopen("patrate3.in","r",stdin);
scanf("%d",&n);
for(i=0;i<n;++i)
scanf("%f %f",&a[i].x,&a[i].y);
}