#include <stdio.h>
#include <algorithm>
#include <math.h>
#define ABS(a) ( (a) < 0 ? -(a) : (a) )
#define NMAX 1024
#define EPS 1e-4
using namespace std;
typedef struct { float x, y; } per;
per P[NMAX], punct, punct1, punct2;
int i, j, N, M;
int Sol;
int ok1, ok2;
float a, b;
float mx, my, dx, dy, x3, x4, y3, y4;
bool operator < (const per &A, const per &B)
{
return ( A.x < B.x || ( fabs( A.x - B.x ) < EPS && A.y < B.y ));
}
int cmp (per A, per B)
{
if (fabs( A.x - B.x ) < EPS && fabs( A.y - B.y ) < EPS ) return 2;
return ( A.x < B.x || ( fabs( A.x - B.x ) < EPS && A.y < B.y ));
}
int search(per X)
{
int c, l = 1, r = N, temp;
while (l <= r)
{
c = (l + r)/2;
temp = cmp(X, P[c]);
if (temp == 2) return 1;
else
if (temp == 1) r = c-1;
else
if (temp == 0) l = c+1;
}
return 0;
}
int exista(float x1, float y1, float x2, float y2)
{
/*x2 -= x1, y2 -= y1;
a = (x2-y2)/2.0, b = (x2+y2)/2.0;
punct.x = a + x1;
punct.y = b + y1;
ok1 = search(punct);
if (ok1)
{
punct.x = b + x1;
punct.y = y1 - a;
ok2 = search(punct);
if (ok2) return 1;
}*/
mx = (x1 + x2) / 2, my = (y1 + y2) / 2;
dx = fabs(mx - x1), dy = fabs(my - y1);
if (y1 < y2)
{
x3 = mx + dy, y3 = my - dx;
x4 = mx - dy, y4 = my + dx;
}
else
{
x3 = mx - dy, y3 = my - dx;
x4 = mx + dy, y4 = my + dx;
}
punct1.x = x3; punct1.y = y3;
punct2.x = x4; punct2.y = y4;
ok1 = search(punct1);
if (ok1)
{
ok2 = search(punct2);
if (ok2) return 1;
}
return 0;
}
int main()
{
freopen("patrate3.in", "r", stdin);
freopen("patrate3.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; i++) scanf("%f %f", &P[i].x, &P[i].y);
sort(P+1, P+N+1);
Sol = 0;
for (i = 1; i <= N; i++)
for (j = i + 1; j <= N; j++)
if (exista(P[i].x, P[i].y, P[j].x, P[j].y)==1) Sol++;
printf("%d\n", Sol/2);
return 0;
}