#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
//英语 看博友分析 抄博友程序 几何 二分 背
//抄博友分析 背
// 已知: (x1,y1) (x2,y2)
//则: x3=x1+(y1-y2) y3= y1-(x1-x2)
//x4=x2+(y1-y2) y4=y2-(x1-x2)
//或 :x3=x1-(y1-y2) y3= y1+(x1-x2)
//x4=x2-(y1-y2) y4= y2+(x1-x2)
struct nod{
int x;
int y;
};
int n;
bool cmp(nod a,nod b)
{
if(a.x==b.x)
{
return a.y<b.y;
}else
{
return a.x<b.x;
}
}
nod da[1008];
int search(int x,int y)
{
int l=0;
int r=n;
while(l<=r)//抄博友程序
{
int mid=(l+r)/2;
if(da[mid].x==x && da[mid].y==y)
{
return 1;
}else if(da[mid].x<x||(da[mid].x==x && da[mid].y<y))
{
l=mid+1;
}else
{
r=mid-1;
}
}
return 0;
}
int main()
{
while(1)
{
scanf("%d",&n);
if(n==0)
{
break;
}
for(int i=0;i<n;i++)
{
scanf("%d%d",&da[i].x,&da[i].y);
}
sort(da,da+n,cmp);
int jg=0;
for(int i=0;i<n;i++)
{
for(int j=i+1;j<n;j++)
{
int x1=da[i].x;
int y1=da[i].y;
int x2=da[j].x;
int y2=da[j].y;
int x3=x1+(y2-y1);
int y3=y1-(x2-x1);
if(search(x3,y3)==0)
{
continue;
}
int x4=x2+(y2-y1);
int y4=y2-(x2-x1);
if(search(x4,y4)==0)
{
continue;
}
//cout<<x1<<" "<<y1<<" "<<x2<<" "<<y2<<" "<<x3<<" "<<y3<<" "<<x4<<" "<<y4<<endl;
jg++;
}
}
printf("%d\n",jg/2);//一个正方形中的一对垂直的边会求到相同的四点
}
return 0;
}