10
-2 1
2 -2
-1 -2
0 0
2 -1
0 -2
2 2
0 2
-1 -1
1 -2
 40
-8 24
2 -1
1 -18
72 -70
5 -4
-308 436
-19 40
36 -35
-178 265
-1 2
-7 30
-1 0
3 -2
200 -285
17 -16
-35 74
0 -4
-86 106
-1 4
-7 6
0 1
-5 4
-2 3
6 -5
-4 5
181 -262
76 -118
0 0
-7 18
-58 104
-5 6
-6 12
-3 4
1 0
11 -10
-86 130
-3 6
153 -236
-183 270
-33 64
 5
0 -1
0 -2
0 -3
0 -4
0 -5
 10
0 1
-1 -1
1 1
-1 0
1 -1
-2 -1
-2 2
-2 0
0 -2
0 -1
 20
-1 18
-2 5
-5 4
2 -33
9 -18
0 0
11 -22
2 0
-1 2
-4 41
1 6
1 -2
6 -12
0 1
-3 6
3 -6
3 -8
-1 4
2 -5
1 0
 10
2 1
-1 0
-2 -1
-1 1
0 2
2 -2
0 0
-2 -2
0 -2
-2 1
 20
-3 -3
0 4
-3 1
1 1
-1 2
-4 4
3 -1
-3 0
0 2
4 0
2 3
2 4
4 -3
-4 3
-1 1
1 3
-2 4
1 -2
1 -1
3 0
 3
0 0
0 -1
0 1
 10
2 1
-1 1
0 0
-3 1
-2 -3
-1 -2
-1 -1
1 2
3 -2
0 -2
 3
3 3
1 2
1 1
 4
0 0
1 0
2 0
3 0
 9
1 1
1 0
0 1
0 0
-1 0
-1 1
-1 -1
1 -1
0 -1
 7
1 1
-1 -1
1 0
0 1
-1 0
0 -1
0 0

4
 57
 4
 5
 21
 4
 10
 1
 1
 0
 2
 8
 3

import java.util.*;
import java.io.*;
import java.math.BigInteger;
public class Krok2B{
    static BufferedReader br;
    public static void main(String args[])throws Exception{
        br=new BufferedReader(new InputStreamReader(System.in));
        int n=toInt();
        int x[]=new int[n];
        int y[]=new int[n];
        Point p[]=new Point[n];

        for(int i=0;i<n;i++){
            int nm[]=toIntArray();
            x[i]=nm[0];
            y[i]=nm[1];
            p[i]=new Point(x[i],y[i]);
        }
        Arrays.sort(p);

        int count=0;
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                //System.out.println((p[j].x-p[i].x)+" "+(p[j].y-p[i].y));
                if((p[i].x-p[j].x)%2!=0)continue;
                if((p[i].y-p[j].y)%2!=0)continue;
                //System.out.println("passed "+(i+1)+" "+(j-1)+" "+(p[j].x-p[i].x)/2+" "+(p[j].y-p[i].y)/2);
                int m=binarySearch(p,p[i].x+(p[j].x-p[i].x)/2,p[i].y+(p[j].y-p[i].y)/2,i+1,j-1);
                //System.out.println(m);
                if(m!=-1){
                    count++;
                }
            }
        }

        System.out.println(count);

    }
    public static int binarySearch(Point s[], int findX, int findY, int l, int r) {
        int start, end, midPt;
        start = l;
        end=r;
        //System.out.println("while "+start+" "+end);
        while (start <= end) {
            midPt = (start + end) / 2;
            //System.out.println(s[midPt].x+" "+ s[midPt].y);
            if (s[midPt].x == findX && s[midPt].y == findY) {
                return midPt;
            } else if (s[midPt].x < findX) {
                start = midPt + 1;
            } else {
                end = midPt - 1;
            }
        }
        return -1;
    }

    /****************************************************************/
    public static int[] toIntArray()throws Exception{
       String str[]=br.readLine().split(" ");
       int k[]=new int[str.length];
       for(int i=0;i<str.length;i++){
            k[i]=Integer.parseInt(str[i]);
       }
       return k;
    }
    public static int toInt()throws Exception{
       return Integer.parseInt(br.readLine());
    }
    public static long[] toLongArray()throws Exception{
       String str[]=br.readLine().split(" ");
       long k[]=new long[str.length];
       for(int i=0;i<str.length;i++){
            k[i]=Long.parseLong(str[i]);
       }
       return k;
    }
    public static long toLong()throws Exception{
       return Long.parseLong(br.readLine());
    }
    public static double[] toDoubleArray()throws Exception{
       String str[]=br.readLine().split(" ");
       double k[]=new double[str.length];
       for(int i=0;i<str.length;i++){
            k[i]=Double.parseDouble(str[i]);
       }
       return k;
    }
    public static double toDouble()throws Exception{
       return Double.parseDouble(br.readLine());
    }
    public static String toStr()throws Exception{
       return br.readLine();
    }
    public static String[] toStrArray()throws Exception{
       String str[]=br.readLine().split(" ");
       return str;
    }
    /****************************************************************/

}

class Point implements Comparable<Point>{

    int x;
    int y;

    public Point(int f, int s) {
        x = f;
        y = s;
    }

    public int compareTo(Point p) {
        int ret = 0;
        if (x < p.x) {
            ret = -1;

        } else if (x > p.x) {
            ret = 1;

        } else {
            if(y<p.y){
                ret=-1;
            }
            else if(y>p.y){
                ret=1;
            }
            else ret=0;
        }
        return ret;
    }
}
