#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
struct Tacka{
    int x,y;
};
double koeficijentPravca(Tacka t1,Tacka t2){
    if(t1.x==t2.x)
        return INT_MAX;
    return (t2.y-t1.y)/(t2.x-t1.x);
}
double duzina(Tacka t1,Tacka t2){
    return sqrt(pow(t1.x-t2.x,2)+pow(t1.y-t2.y,2));
}
bool trapez(Tacka t1,Tacka t2,Tacka t3,Tacka t4){
    if(koeficijentPravca(t1,t2)==koeficijentPravca(t3,t4) || koeficijentPravca(t1,t3)==
       koeficijentPravca(t2,t4) || koeficijentPravca(t1,t4)==koeficijentPravca(t2,t3))
        return true;
    return false;
}
int sumnjiveCetvorke(Tacka t1,Tacka t2,Tacka t3,Tacka t4){
    int brCetvorki=0;
    if(koeficijentPravca(t1,t2)==koeficijentPravca(t3,t4))
        if(duzina(t1,t2)/duzina(t3,t4)==0.5 || duzina(t1,t2)/duzina(t3,t4)==2)
            brCetvorki++;
    if(koeficijentPravca(t1,t3)==koeficijentPravca(t2,t4))
        if(duzina(t1,t3)/duzina(t2,t4)==0.5 || duzina(t1,t3)/duzina(t2,t4)==2)
            brCetvorki++;
    if(koeficijentPravca(t1,t4)==koeficijentPravca(t2,t3))
        if(duzina(t1,t4)/duzina(t2,t3)==0.5 || duzina(t1,t4)/duzina(t2,t3)==2)
            brCetvorki++;
    return brCetvorki;
}
void sveCetvorke(vector<Tacka>& t,vector<Tacka>& temp,
                 int poc,int kraj,int br,int& brCetvorki){
    if(br==4){
        brCetvorki+=sumnjiveCetvorke(temp[0],temp[1],temp[2],temp[3]);
        return;
    }
    for(int i=poc;i<=kraj && kraj-i+1>=4-br;i++){
        temp[br]=t[i];
        sveCetvorke(t,temp,i+1,kraj,br+1,brCetvorki);
    }
}
int main(){
    ios_base::sync_with_stdio(false);
    int N;
    cin>>N;
    vector<pair<int,int>> takmicari(N);
    vector<Tacka> t(N);
    for(int i=0;i<N;i++){
        cin>>takmicari[i].first>>takmicari[i].second;
        t[i].x=takmicari[i].first;
        t[i].y=takmicari[i].second;
    }
    vector<Tacka> temp(4);
    int brojSumnjivihCetvorki=0;
    sveCetvorke(t,temp,0,N-1,0,brojSumnjivihCetvorki);
    cout<<brojSumnjivihCetvorki<<endl;
	return 0;
}