#include <stdio.h>
#include <math.h>
#include <malloc.h>

#define MAX 1500

int main()
{
    double DuzinaVektora(int**);
    int ParalelniVektori(int**, int**);

    int SveKoordinate[MAX][2];
    int**** SviVektoriMat;
    int*** SviVektori;

    int n;

    scanf("%d", &n);

    SviVektori = (int***)calloc(n * n, sizeof(int**));
    for (int i = 0; i < n * n; ++i)
    {
        SviVektori[i] = (int**)calloc(2, sizeof(int*));
        SviVektori[i][0] = (int*)calloc(2, sizeof(int));
        SviVektori[i][1] = (int*)calloc(2, sizeof(int));
    }

    SviVektoriMat = (int****)calloc(n, sizeof(int***));
    for (int i = 0; i < n; ++i)
    {
        SviVektoriMat[i] = (int***)calloc(n, sizeof(int**));
        for (int j = 0; j < n; ++j)
        {
            SviVektoriMat[i][j] = (int**)calloc(2, sizeof(int*));
            SviVektoriMat[i][j][0] = (int*)calloc(2, sizeof(int));
            SviVektoriMat[i][j][1] = (int*)calloc(2, sizeof(int));
        }
    }

    for (int i = 0; i < n; ++i)
    {
        scanf("%d %d", &SveKoordinate[i][0], &SveKoordinate[i][1]);
    }

    for (int i = 0; i < n; ++i)
    {
        for (int j = i; j < n; ++j)
        {
            SviVektoriMat[i][j][0][0] = SveKoordinate[j][0];
            SviVektoriMat[i][j][0][1] = SveKoordinate[j][1];

            SviVektoriMat[i][j][1][0] = SveKoordinate[i][0];
            SviVektoriMat[i][j][1][1] = SveKoordinate[i][1];
        }
    }

    int dosad = 0;

    for (int i = 0; i < n; ++i)
    {
        for (int j = i + 1; j < n; ++j)
        {
            for (int z = 0; z < 2; ++z)
            {
                SviVektori[dosad][z][0] = SviVektoriMat[i][j][z][0];
                SviVektori[dosad][z][1] = SviVektoriMat[i][j][z][1];
            }

            dosad++;
        }
    }

    free(SviVektoriMat);

    int BrojDvostrukoVecih = 0;

    for (int i = 0; i < dosad; ++i)
    {
        for (int j = 0; j < dosad; ++j)
        {
            if (ParalelniVektori(SviVektori[i], SviVektori[j]))
            {
                BrojDvostrukoVecih++;
            }
        }
    }
    free(SviVektori);
    printf("%d", BrojDvostrukoVecih);
}

int DuploDuzi(int** Vektor1, int** Vektor2)
{
    int PomerajI = Vektor2[0][0] - Vektor1[0][0];
    int PomerajJ = Vektor2[0][1] - Vektor1[0][1];

    int **Vektor2ZK, **Vektor1ZK;

    int PomerajIV1 = -Vektor1[0][0];
    int PomerajIV2 = -Vektor2[0][0];
    int PomerajJV1 = -Vektor1[0][1];
    int PomerajJV2 = -Vektor2[0][1];

    int **TrenutniVektor1, **TrenutniVektor2;

    TrenutniVektor1 = (int**)calloc(2, sizeof(int*));
    TrenutniVektor1[0] = (int*)calloc(2, sizeof(int));
    TrenutniVektor1[1] = (int*)calloc(2, sizeof(int));

    TrenutniVektor2 = (int**)calloc(2, sizeof(int*));
    TrenutniVektor2[0] = (int*)calloc(2, sizeof(int));
    TrenutniVektor2[1] = (int*)calloc(2, sizeof(int));

    for (int i = 0; i < 2; ++i)
    {
        for (int j = 0; j < 2; ++j)
        {
            TrenutniVektor1[i][j] = Vektor1[i][j];
            TrenutniVektor2[i][j] = Vektor2[i][j];
        }
    }

    TrenutniVektor1[0][0] += PomerajIV1;
    TrenutniVektor1[1][0] += PomerajIV1;
    TrenutniVektor1[0][1] += PomerajJV1;
    TrenutniVektor1[1][1] += PomerajJV1;

    TrenutniVektor2[0][0] += PomerajIV2;
    TrenutniVektor2[1][0] += PomerajIV2;
    TrenutniVektor2[0][1] += PomerajJV2;
    TrenutniVektor2[1][1] += PomerajJV2;

    if (TrenutniVektor1[1][0] * 2 == TrenutniVektor2[1][0] || TrenutniVektor1[1][1] * 2 == TrenutniVektor2[1][1]) return 1;

    return 0;
}

double Abs(double Broj)
{
    return (Broj < 0) ? -Broj : Broj;
}

double DuzinaVektora(int** Vektor)
{
    return sqrt(Vektor[0][0] * Vektor[0][0] + Vektor[1][1] * Vektor[1][1]);
}

int ParalelniVektori(int** Vektor1, int** Vektor2)
{
    int ImaNule(int**);
    void PovecajVektor(int**);
    double Abs(double);

    if (DuzinaVektora(Vektor1) == 0 || DuzinaVektora(Vektor2) == 0) return 0;

    int PomerajIV2 = Vektor1[0][0] - Vektor2[0][0];
    int PomerajJV2 = Vektor1[0][1] - Vektor2[0][1];

    int **TrenutniVektor1, **TrenutniVektor2;

    TrenutniVektor1 = (int**)calloc(2, sizeof(int*));
    TrenutniVektor1[0] = (int*)calloc(2, sizeof(int));
    TrenutniVektor1[1] = (int*)calloc(2, sizeof(int));

    TrenutniVektor2 = (int**)calloc(2, sizeof(int*));
    TrenutniVektor2[0] = (int*)calloc(2, sizeof(int));
    TrenutniVektor2[1] = (int*)calloc(2, sizeof(int));

    for (int i = 0; i < 2; ++i)
    {
        for (int j = 0; j < 2; ++j)
        {
            TrenutniVektor1[i][j] = Vektor1[i][j];
            TrenutniVektor2[i][j] = Vektor2[i][j];
        }
    }

    TrenutniVektor2[0][0] += PomerajIV2;
    TrenutniVektor2[1][0] += PomerajIV2;
    TrenutniVektor2[0][1] += PomerajJV2;
    TrenutniVektor2[1][1] += PomerajJV2;

    if (TrenutniVektor2[1][0] == TrenutniVektor1[1][0] + TrenutniVektor1[1][0] - TrenutniVektor1[0][0] &&
        TrenutniVektor2[1][1] == TrenutniVektor1[1][1] + TrenutniVektor1[1][1] - TrenutniVektor1[0][1])
    {
        return 1;
    }
    return 0;
}

void IspisiVektor(int** Vektor)
{
    printf("%d %d\n", Vektor[0][0], Vektor[0][1]);
    printf("%d %d\n", Vektor[1][0], Vektor[1][1]);
}

int ImaNule(int** Vektor)
{
    for (int i = 0; i < 2; ++i)
    {
        for (int j = 0; j < 2; ++j)
        {
            if (Vektor[i][j] == 0)
            {
                return 1;
            }
        }
    }

    return 0;
}

void PovecajVektor(int** Vektor)
{
    for (int i = 0; i < 2; ++i)
    {
        Vektor[i][0]++;
        Vektor[i][1]++;
    }
}