#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
const double eps = 1e-7;
struct point{
double x, y;
point(){};
};
point gv[1005];
vector<double> t;
int main(){
ifstream in("trapez.in");
ofstream out("trapez.out");
int n;
in >> n;
for(int i = 1; i <= n; ++i)
in >> gv[i].x >> gv[i].y;
long long evil = 0, ans = 0;
for(int i = 1; i <= n; ++i)
for(int j = i + 1; j <= n; ++j)
if(gv[i].x == gv[j].x)
++evil;
else
t.push_back((gv[i].y - gv[j].y) / (gv[i].x - gv[j].x));
sort(t.begin(), t.end());
ans = evil * (evil - 1) / 2;
evil = 1;
for(int i = 1; i < t.size(); ++i)
if(fabs(t[i] - t[i - 1]) < eps)
++evil;
else{
ans += evil * (evil - 1) / 2;
evil = 1;
}
ans += evil * (evil - 1) / 2;
out << ans;
return 0;
}