#include <stdio.h>
#include <math.h>
#include <algorithm>
#define EPS 0.0001
#define NMax 1005
typedef struct { double x, y; } coord;
using namespace std;
int N, cnt = 0;
coord v[NMax];
int eq(double x, double y)
{
if (fabs(x-y) < EPS) return 0;
if (x < y) return -1;
return +1;
}
int cmp(coord A, coord B)
{
if (eq(A.x, B.x) != 0) return (eq(A.x, B.x) == -1);
return (eq(A.y, B.y) == -1);
}
int BS(double xx, double yy)
{
int l, r, m;
l = 0; r = N-1;
while (l <= r)
{
m = ((l + r) >> 1);
if (eq(v[m].x, xx) == 0 && eq(v[m].y, yy) == 0)
return m;
else if (eq(v[m].x, xx) == -1 || (eq(v[m].x, xx) == 0 && eq(v[m].y, yy) == -1))
l = m+1;
else if (eq(v[m].x, xx) == +1 || (eq(v[m].x, xx) == 0 && eq(v[m].y, yy) == +1))
r = m-1;
}
return -1;
}
int main(void)
{
int i, j, ok;
double mx, my, x0, y0, x1, y1, dx, dy;
freopen("patrate3.in", "r", stdin);
freopen("patrate3.out", "w", stdout);
scanf("%d", &N);
for (i = 0; i < N; i++)
scanf("%lf %lf", &v[i].x, &v[i].y);
sort(v+0, v+N, cmp);
for (i = 0; i < N; i++)
for (j = i+1; j < N; j++)
if (i != j)
{
/* din sursa lui Daniel ca sa determin celelalte 2 pct. */
mx = (v[i].x + v[j].x) / 2, my = (v[i].y + v[j].y) / 2;
dx = fabs(mx - v[i].x), dy = fabs(my - v[i].y);
if (v[i].y < v[j].y)
{
x0 = mx + dy, y0 = my - dx;
x1 = mx - dy, y1 = my + dx;
}
else
{
x0 = mx - dy, y0 = my - dx;
x1 = mx + dy, y1 = my + dx;
}
/* --- */
ok = BS(x0, y0);
if (ok == -1) continue;
ok = BS(x1, y1);
if (ok == -1) continue;
cnt++;
}
printf("%d\n", cnt/2);
return 0;
}