#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

struct ucenik {
    ll x, y;
};

double pom(ucenik a, ucenik b) {
    if((b.x - a.x) == 0)
        return 3.1415969;
    return (b.y-a.y)/(b.x-a.x);
}

double udaljenost(ucenik a, ucenik b) {
    double pom = sqrt((b.x-a.x)*(b.x-a.x) + (b.y-a.y)*(b.y-a.y));
    return pom;
}

bool provera(ucenik a, ucenik b, ucenik c, ucenik d) {
    double pom1, pom2;
    if(pom(a, b) == pom(c, d)) {
        pom1 = udaljenost(a, b);
        pom2 = udaljenost(c, d);
        if(pom1 == 2*pom2 || pom2 == 2*pom1)
            return true;
    }
    else if(pom(a, d) == pom(b, c)) {
        pom1 = udaljenost(a, d);
        pom2 = udaljenost(b, c);
        if(pom1 == 2*pom2 || pom2 == 2*pom1)
            return true;
    }
    else if(pom(a, c) == pom(b, d)) {
        pom1 = udaljenost(a, c);
        pom2 = udaljenost(b, d);
        if(pom1 == 2*pom2 || pom2 == 2*pom1)
            return true;
    }
    else
        return false;
}

ll brojTrapeza(ucenik ucenici[], int n) {
    ll broj = 0;
    vector<ll> niz;
    vector<vector<ll> > iskorisceni;
    for(int i = 0;i < n;i++)
        for(int j = i + 1;j < n;j++)
            for(int k = j + 1;k < n;k++)
                for(int l = k + 1;l < n;l++) {
                    niz.clear();
                    niz.push_back(i);
                    niz.push_back(j);
                    niz.push_back(k);
                    niz.push_back(l);
                    sort(niz.begin(), niz.end());
                    if(!(find(iskorisceni.begin(), iskorisceni.end(), niz) != iskorisceni.end()) && provera(ucenici[i], ucenici[j], ucenici[k], ucenici[l])) {
                        iskorisceni.push_back(niz);
                        broj += 1;
                    }
                }
    return broj;
}

int main() {
    int n;
    cin >> n;
    ucenik ucenici[n];
    for(int i = 0;i < n;i++)
        cin >> ucenici[i].x >> ucenici[i].y;
    if(n < 4)
        cout << "0";
    else
        cout << brojTrapeza(ucenici, n);
    return 0;
}