using System;
using System.Collections;
using System.Linq;
using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;

namespace Zadaci
{
    public static class Math
    {
        public static int Fact(int x1) //factorial fukcija, radi posao, mozda sam previse otisao sa ovim zadatkom ali kada vec pisem custom operatore za klase ovo nece da me ubije
        {
            int fact = 1;
            for (int x = 1; x <= x1; x++)
            {
                fact *= x;
            }
            return fact;
        }
        public static int Comb(int n, int k)
        {
            return Fact(n) / (Fact(k) * Fact(n - k));
        }
    }
    public class Program
    {
        public class Vector
        {
            public float x, y;// naznaka: pretvoriti ovo u intove, mozda drzati intenzitet i ta sranja kao float jer smesan koren, 
                              //ali ovde nema potrebe za necelobrojnim vrednostima
            public Vector(float X, float Y)
            {
                x = X;
                y = Y;
            }
            public static Vector operator +(Vector v1, Vector v2)
            {
                return new Vector(v1.x + v2.y, v1.y + v2.y);
            }
            public static Vector operator -(Vector v1, Vector v2)
            {
                return new Vector(v1.x - v2.y, v1.y - v2.y);
            }
            public static Vector operator *(int k, Vector v)
            {
                return new Vector(v.x * k, v.y * k);
            }
            public static bool operator ==(Vector left, Vector right)
            {
                if (left.x == right.x && left.y == right.y)
                    return true;
                else
                    return false;
            }
            public static bool operator !=(Vector left, Vector right)
            {
                return (right == left);//eh nisam 100% siguran oko ovoga
            }
            public static bool Trapezoid(Vector v1, Vector v2, Vector v3, Vector v4)
            {
                Vector v1v2 = (v2 - v1);
                Vector v3v4 = (v4 - v3);
                if (v1v2 != v3v4)
                    return false;
                else
                    return true;
            }
        }


        public static void Main()
        {
            uint n = uint.Parse(Console.ReadLine());

            List<Vector> vek = new List<Vector>();
            for (int i = 0; i < n; i++)
            {
                string[] ulaz = Console.ReadLine().Split();
                vek.Add(new Vector(float.Parse(ulaz[0]), float.Parse(ulaz[1])));
            }
            int brojSusa = 0;
            List<int[]> coms = kombinacije(vek);
            foreach (int[] c in coms)
            {
                if (Vector.Trapezoid(vek[c[0]], vek[c[1]], vek[c[2]], vek[c[3]]))
                {
                    brojSusa++;
                }
            }
            Console.WriteLine(brojSusa);

        }

        public static List<int[]> kombinacije(List<Vector> vektori)
        {

            List<int[]> dodati = new List<int[]>();
            Console.WriteLine(Math.Comb(vektori.Count, 4));
            for (int i = 0; i < Math.Comb(vektori.Count,4); i++)// mozd cnt - 1
            {
                int[] rej = new int[4];
                for (int j = 0; j < 4; j++)
                {
                    if (i + j < 4)
                    {
                        rej[j] = i + j;
                    }
                    else
                    {
                        rej[j] = (i + j) - 4;
                    }
                }
                dodati.Add(rej);
            }
            return dodati;
        }


    }
}