#include<fstream>
#include<algorithm>
using namespace std;
ifstream cin("trapez.in");
ofstream cout("trapez.out");
struct dr{
int x1,y1,x2,y2;
} d[1000005];
int n,k,x[1005],y[1005],ans;
int cmp(dr i,dr j){
long long d1,d2,d3,d4;
d1=1LL*i.y1-i.y2; d2=1LL*i.x1-i.x2;
d3=1LL*j.y1-j.y2; d4=1LL*j.x1-j.x2;
return d1*d4<d2*d3;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>x[i]>>y[i];
for(int i=1;i<n;i++)
for(int j=i+1;j<=n;j++){
++k;
d[k].x1=x[i];
d[k].y1=y[i];
d[k].x2=x[j];
d[k].y2=y[j];
}
sort(d+1,d+k+1,cmp);
for(int i=1;i<k;i++){
int cnt=1;
long long d1,d2,d3,d4;
d1=1LL*d[i].y1-d[i].y2; d2=1LL*d[i].x1-d[i].x2;
d3=1LL*d[i+1].y1-d[i+1].y2; d4=1LL*d[i+1].x1-d[i+1].x2;
while(i<k && d1*d4==d2*d3){
++cnt; ++i;
d1=1LL*d[i].y1-d[i].y2; d2=1LL*d[i].x1-d[i].x2;
d3=1LL*d[i+1].y1-d[i+1].y2; d4=1LL*d[i+1].x1-d[i+1].x2;
}
ans+=cnt*(cnt-1)/2;
}
cout<<ans;
}