#include <bits/stdc++.h>
using namespace std;

#define ios ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define ll long long
#define inf INT_MAX
#define llinf LLONG_MAX
#define mt make_tuple
#define mp make_pair
#define parll pair<ll,ll>
#define parii pair<int,int>
#define nzd __gcd
#define nzs(e1,e2) (e1/nzd(e1,e2))*e2
#define min3(brp1,brp2,brp3) min(brp1,min(brp2,brp3))
#define min4(brp1,brp2,brp3,brp4) min(brp1,min3(brp2,brp3,brp4))
#define max3(brp1,brp2,brp3) max(brp1,max(brp2,brp3))
#define max4(brp1,brp2,brp3,brp4) max(brp1,max3(brp2,brp3,brp4))
#define all(V) V.begin(),V.end()
#define l_b(BRL,brl) lower_bound( BRL.begin(), BRL.end(), brl )-BRL.begin()-1 /// !za one based! vraca mani iako brl postoji, vraca 0 kada ne postoji manji
#define u_b(BRU,bru) upper_bound( BRU.begin(), BRU.end(), bru )-BRU.begin() /// !za one based! vraca veci iako bru postoji, vraca n+1 kada ne postoji veci
#define mod 1000000007
#define mxn 1522
#define mx 1124252

struct tacka
{
    ll x;
    ll y;
};

struct prava
{
    ll val; /// apsolutna vrednost razlike ne nulte koordinate
    ll br; /// koeficijent
    ll im;
};

ll q,k,n,rez=0;
vector <tacka> T(mxn);
vector <prava> P;
ll C[mx],c=0;

bool sortiraj( prava a, prava b )
{
    return (a.br==b.br)?(a.im>b.im):(a.br<b.br);
}

prava IzracunajKoeficijent( tacka a, tacka b )
{
    ll rx = a.x-b.x;
    ll ry = a.y-b.y;
    ll nzdr = nzd(rx,ry);
    ll valu = (ry)?abs(ry):abs(rx);
    rx /= nzdr;
    ry /= nzdr;

    if ( rx < 0 )
    {
        rx = -rx;
        ry = -ry;
    }

    return {valu,ry,rx};
}

void PrebrojPrave()
{
    map <ll,ll> M;
    for ( ll i = 0; i < c; i++ )
    {
        M[C[i]]++;
    }

    vector <parll> V;
    copy( all(M), back_inserter(V) );
    for ( auto x : V )
    {
        rez += x.second*M[2*x.first];
    }
}

int main()
{
    ios;

    cin >> n;
    for ( ll i = 1; i <= n; i++ )
    {
        cin >> T[i].x >> T[i].y;
    }

    prava p;
    for ( ll i = 1; i < n; i++ )
    {
        for ( ll j = i+1; j <= n; j++ )
        {
            p = IzracunajKoeficijent(T[i],T[j]);
            P.push_back(p);
        }
    }

    sort(all(P),sortiraj);

    for ( ll i = 0; i < P.size(); i++ )
    {
        C[c++] = P[i].val;
        if ( i == P.size()-1 || P[i].br != P[i+1].br || P[i].im != P[i+1].im )
        {
            if ( c > 1 )
            {
                PrebrojPrave();
            }
            c = 0;
        }
    }
    cout << rez;

    return 0;
}