using System;
class MRZIMPROGRAMIRANJE
{
    public static double suma = 0;
    struct trapez
    {
        public double x;
        public double y;
    }
    static void kombinacijeMainMetoda(int[] nizIndeksa, int[] GlavniNiz, int pocetak, double kraj, int indeks, double x, trapez[] AAA)
    {
        if (indeks == x)
        {
            double x1 = AAA[GlavniNiz[0]].x;
            double y1 = AAA[GlavniNiz[0]].y;
            double x2 = AAA[GlavniNiz[1]].x;
            double y2 = AAA[GlavniNiz[1]].y;
            double x3 = AAA[GlavniNiz[2]].x;
            double y3 = AAA[GlavniNiz[2]].y;
            double x4 = AAA[GlavniNiz[3]].x;
            double y4 = AAA[GlavniNiz[3]].y;
            double stranicaA = 0.0;
            double stranicaB = 0.0;
            if ((y4 - y3) / (x4 - x3) == (y2 - y1) / (x2 - x1))
            {
                stranicaA = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));
                stranicaB = Math.Sqrt(Math.Pow(x4 - x3, 2) + Math.Pow(y4 - y3, 2));
                if ((stranicaA == stranicaB * 2))
                {
                    suma++;
                    return;
                }
                else if ((stranicaA == stranicaB * 0.5))
                {
                    suma++;
                    return;
                }
            }
            if ((y3 - y1) / (x3 - x1) == (y2 - y4) / (x2 - x4))
            {
                stranicaA = Math.Sqrt(Math.Pow(x3 - x1, 2) + Math.Pow(y3 - y1, 2));
                stranicaB = Math.Sqrt(Math.Pow(x2 - x4, 2) + Math.Pow(y2 - y4, 2));
                if ((stranicaA == stranicaB * 2))
                {
                    suma++;
                    return;
                }
                else if ((stranicaA == stranicaB * 0.5))
                {
                    suma++;
                    return;
                }
            }
            if ((y1 - y4) / (x1 - x4) == (y3 - y2) / (x3 - x2))
            {
                stranicaA = Math.Sqrt(Math.Pow(x1 - x4, 2) + Math.Pow(y1 - y4, 2));
                stranicaB = Math.Sqrt(Math.Pow(x3 - x2, 2) + Math.Pow(y3 - y2, 2));
                if ((stranicaA == stranicaB * 2))
                {
                    suma++;
                    return;
                }
                else if ((stranicaA == stranicaB * 0.5))
                {
                    suma++;
                    return;
                }
            }
            return;
        }
        for (int i = pocetak; i <= kraj && kraj - i + 1 >= x - indeks; i++)
        {
            GlavniNiz[indeks] = nizIndeksa[i];
            kombinacijeMainMetoda(nizIndeksa, GlavniNiz, i + 1, kraj, indeks + 1, x, AAA);
        }
    }
    static void PozoviTest(int[] nizIndeksa, int n, int r, trapez[] AAA)
    {
        int[] data = new int[r];
        kombinacijeMainMetoda(nizIndeksa, data, 0, n - 1, 0, r, AAA);
    }
    static public void Main()
    {
        int N = int.Parse(Console.ReadLine());
        trapez[] koordinate = new trapez[N];
        int[] nizIndeksa = new int[N];
        for (int i = 0; i < N; i++)
        {
            nizIndeksa[i] = i;
        }
        string linija = "";
        string[] linijaNiz = new string[2];
        for (int i = 0; i < N; i++)
        {
            linija = Console.ReadLine();
            linijaNiz = linija.Split();
            koordinate[i].x = double.Parse(linijaNiz[0]);
            koordinate[i].y = double.Parse(linijaNiz[1]);
        }
        int n = nizIndeksa.Length;
        PozoviTest(nizIndeksa, n, 4, koordinate);
        Console.WriteLine(suma);
    }
}