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


map<pair<int,int>,map<int,int>> m; 

map<int,int> t;

int ptx[N];
int pty[N];


int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n;
    cin>>n;
    for(int i =0;i<n;i++){
        
        cin>>ptx[i]>>pty[i];
        
    }
    for(int i =0;i<n;i++){
        for(int j =i+1;j<n;j++){
            int x = ptx[i]-ptx[j];
            int y = pty[i]-pty[j];
            int l;
            int g = __gcd(x,y);
            if(g!=0){
                x/=g;
                y/=g;
                l = abs(g);
            }
            else{
                l = max(abs(x),abs(y));
                x/=max(x,1);
                y/=max(y,1);

            }
            m[make_pair(x,y)][l]++;
        }
    }
    map<pair<int,int>,map<int,int>>::iterator it;
    map<int,int>::iterator jt;
    //we dump the map
    /*
    for(it = m.begin();it!=m.end();it++){
        
        cout<<it->first.first<<' '<<it->first.second<<" Lengths: ";
        for(int i =0;i<it->second.size();i++){
            cout<<it->second[i]<<' ';
        }
        cout<<endl;
    }
    */
    int res =0;
    for(it = m.begin();it!=m.end();it++){
        /*
        for(int i =0;i<it->second.size();i++){
            t[it->second[i]]++;
        }
        for(jt=t.begin();jt!=t.end();jt++){
            auto db = t.find(jt->first*2);
            if(db!=t.end()){
                res+=jt->second* db->second;
            }
        }
        t.clear();
        */
        for(jt=it->second.begin();jt!=it->second.end();jt++){
            auto db = it->second.find(jt->first*2);
            if(db!=it->second.end()){
                res+=jt->second* db->second;
            }
        }
    }
    cout<<res<<endl;
    return 0;
}